@@ -247,6 +247,17 @@ s_no_extra_traits! {
247247 // Array length changed from 88 to 1024 in FreeBSD 12:
248248 pub f_mntonname: [ :: c_char; 88 ] ,
249249 }
250+
251+ pub struct vnstat {
252+ pub vn_fileid: u64 ,
253+ pub vn_size: u64 ,
254+ pub vn_mntdir: * mut :: c_char,
255+ pub vn_dev: u32 ,
256+ pub vn_fsid: u32 ,
257+ pub vn_type: :: c_int,
258+ pub vn_mode: u16 ,
259+ pub vn_devname: [ :: c_char; :: SPECNAMELEN as usize + 1 ] ,
260+ }
250261}
251262
252263cfg_if ! {
@@ -366,13 +377,62 @@ cfg_if! {
366377 self . d_name[ ..self . d_namlen as _] . hash( state) ;
367378 }
368379 }
380+
381+ impl PartialEq for vnstat {
382+ fn eq( & self , other: & vnstat) -> bool {
383+ let self_vn_devname: & [ :: c_char] = & self . vn_devname;
384+ let other_vn_devname: & [ :: c_char] = & other. vn_devname;
385+
386+ self . vn_fileid == other. vn_fileid &&
387+ self . vn_size == other. vn_size &&
388+ self . vn_mntdir == other. vn_mntdir &&
389+ self . vn_dev == other. vn_dev &&
390+ self . vn_fsid == other. vn_fsid &&
391+ self . vn_type == other. vn_type &&
392+ self . vn_mode == other. vn_mode &&
393+ self_vn_devname == other_vn_devname
394+ }
395+ }
396+ impl Eq for vnstat { }
397+ impl :: fmt:: Debug for vnstat {
398+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
399+ let self_vn_devname: & [ :: c_char] = & self . vn_devname;
400+
401+ f. debug_struct( "vnstat" )
402+ . field( "vn_fileid" , & self . vn_fileid)
403+ . field( "vn_size" , & self . vn_size)
404+ . field( "vn_mntdir" , & self . vn_mntdir)
405+ . field( "vn_dev" , & self . vn_dev)
406+ . field( "vn_fsid" , & self . vn_fsid)
407+ . field( "vn_type" , & self . vn_type)
408+ . field( "vn_mode" , & self . vn_mode)
409+ . field( "vn_devname" , & self_vn_devname)
410+ . finish( )
411+ }
412+ }
413+ impl :: hash:: Hash for vnstat {
414+ fn hash<H : :: hash:: Hasher >( & self , state: & mut H ) {
415+ let self_vn_devname: & [ :: c_char] = & self . vn_devname;
416+
417+ self . vn_fileid. hash( state) ;
418+ self . vn_size. hash( state) ;
419+ self . vn_mntdir. hash( state) ;
420+ self . vn_dev. hash( state) ;
421+ self . vn_fsid. hash( state) ;
422+ self . vn_type. hash( state) ;
423+ self . vn_mode. hash( state) ;
424+ self_vn_devname. hash( state) ;
425+ }
426+ }
369427 }
370428}
371429
372430pub const ELAST : :: c_int = 96 ;
373431pub const RAND_MAX : :: c_int = 0x7fff_fffd ;
374432pub const KI_NSPARE_PTR : usize = 6 ;
375433pub const MINCORE_SUPER : :: c_int = 0x20 ;
434+ /// max length of devicename
435+ pub const SPECNAMELEN : :: c_int = 63 ;
376436
377437extern "C" {
378438 // Return type ::c_int was removed in FreeBSD 12
0 commit comments