struct _IO_FILE { int _flags; /* 0 4 */ /* XXX 4 bytes hole, try to pack */ char * _IO_read_ptr; /* 8 8 */ char * _IO_read_end; /* 16 8 */ char * _IO_read_base; /* 24 8 */ char * _IO_write_base; /* 32 8 */ char * _IO_write_ptr; /* 40 8 */ char * _IO_write_end; /* 48 8 */ char * _IO_buf_base; /* 56 8 */ /* --- cacheline 1 boundary (64 bytes) --- */ char * _IO_buf_end; /* 64 8 */ char * _IO_save_base; /* 72 8 */ char * _IO_backup_base; /* 80 8 */ char * _IO_save_end; /* 88 8 */ struct _IO_marker * _markers; /* 96 8 */ struct _IO_FILE * _chain; /* 104 8 */ int _fileno; /* 112 4 */ int _flags2; /* 116 4 */ __off_t _old_offset; /* 120 8 */ /* --- cacheline 2 boundary (128 bytes) --- */ short unsigned int _cur_column; /* 128 2 */ signed char _vtable_offset; /* 130 1 */ char _shortbuf[1]; /* 131 1 */ /* XXX 4 bytes hole, try to pack */ _IO_lock_t * _lock; /* 136 8 */ __off64_t _offset; /* 144 8 */ struct _IO_codecvt * _codecvt; /* 152 8 */ struct _IO_wide_data * _wide_data; /* 160 8 */ struct _IO_FILE * _freeres_list; /* 168 8 */ void * _freeres_buf; /* 176 8 */ size_t __pad5; /* 184 8 */ /* --- cacheline 3 boundary (192 bytes) --- */ int _mode; /* 192 4 */ char _unused2[20]; /* 196 20 */ /* size: 216, cachelines: 4, members: 29 */ /* sum members: 208, holes: 2, sum holes: 8 */ /* last cacheline: 24 bytes */ }; struct ClockIdentity { Octet id[8]; /* 0 8 */ /* size: 8, cachelines: 1, members: 1 */ /* last cacheline: 8 bytes */ }; struct PortIdentity { struct ClockIdentity clockIdentity; /* 0 8 */ UInteger16 portNumber; /* 8 2 */ /* size: 10, cachelines: 1, members: 2 */ /* last cacheline: 10 bytes */ }; struct option { const char * name; /* 0 8 */ int has_arg; /* 8 4 */ /* XXX 4 bytes hole, try to pack */ int * flag; /* 16 8 */ int val; /* 24 4 */ /* size: 32, cachelines: 1, members: 4 */ /* sum members: 24, holes: 1, sum holes: 4 */ /* padding: 4 */ /* last cacheline: 32 bytes */ }; struct sockaddr { sa_family_t sa_family; /* 0 2 */ char sa_data[14]; /* 2 14 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct sockaddr_storage { sa_family_t ss_family; /* 0 2 */ char __ss_padding[118]; /* 2 118 */ /* --- cacheline 1 boundary (64 bytes) was 56 bytes ago --- */ long unsigned int __ss_align; /* 120 8 */ /* size: 128, cachelines: 2, members: 3 */ }; struct sockaddr_in { sa_family_t sin_family; /* 0 2 */ in_port_t sin_port; /* 2 2 */ struct in_addr sin_addr; /* 4 4 */ unsigned char sin_zero[8]; /* 8 8 */ /* size: 16, cachelines: 1, members: 4 */ /* last cacheline: 16 bytes */ }; struct sockaddr_in6 { sa_family_t sin6_family; /* 0 2 */ in_port_t sin6_port; /* 2 2 */ uint32_t sin6_flowinfo; /* 4 4 */ struct in6_addr sin6_addr; /* 8 16 */ uint32_t sin6_scope_id; /* 24 4 */ /* size: 28, cachelines: 1, members: 5 */ /* last cacheline: 28 bytes */ }; struct sockaddr_un { sa_family_t sun_family; /* 0 2 */ char sun_path[108]; /* 2 108 */ /* size: 110, cachelines: 2, members: 2 */ /* last cacheline: 46 bytes */ }; struct in_addr { in_addr_t s_addr; /* 0 4 */ /* size: 4, cachelines: 1, members: 1 */ /* last cacheline: 4 bytes */ }; struct in6_addr { union { uint8_t __u6_addr8[16]; /* 0 16 */ uint16_t __u6_addr16[8]; /* 0 16 */ uint32_t __u6_addr32[4]; /* 0 16 */ } __in6_u; /* 0 16 */ /* size: 16, cachelines: 1, members: 1 */ /* last cacheline: 16 bytes */ }; struct sockaddr_ll { short unsigned int sll_family; /* 0 2 */ short unsigned int sll_protocol; /* 2 2 */ int sll_ifindex; /* 4 4 */ short unsigned int sll_hatype; /* 8 2 */ unsigned char sll_pkttype; /* 10 1 */ unsigned char sll_halen; /* 11 1 */ unsigned char sll_addr[8]; /* 12 8 */ /* size: 20, cachelines: 1, members: 7 */ /* last cacheline: 20 bytes */ }; struct address { socklen_t len; /* 0 4 */ /* XXX 4 bytes hole, try to pack */ union { struct sockaddr_storage ss; /* 8 128 */ struct sockaddr_ll sll; /* 8 20 */ struct sockaddr_in sin; /* 8 16 */ struct sockaddr_in6 sin6; /* 8 28 */ struct sockaddr_un sun; /* 8 110 */ struct sockaddr sa; /* 8 16 */ }; /* 8 128 */ /* size: 136, cachelines: 3, members: 2 */ /* sum members: 132, holes: 1, sum holes: 4 */ /* last cacheline: 8 bytes */ }; struct unicast_master_address { struct { struct unicast_master_address * stqe_next; /* 0 8 */ } list; /* 0 8 */ struct PortIdentity portIdentity; /* 8 10 */ /* XXX 2 bytes hole, try to pack */ enum transport_type type; /* 20 4 */ enum unicast_state state; /* 24 4 */ /* XXX 4 bytes hole, try to pack */ struct address address; /* 32 136 */ /* --- cacheline 2 boundary (128 bytes) was 40 bytes ago --- */ unsigned int granted; /* 168 4 */ unsigned int sydymsk; /* 172 4 */ time_t renewal_tmo; /* 176 8 */ /* size: 184, cachelines: 3, members: 8 */ /* sum members: 178, holes: 2, sum holes: 6 */ /* last cacheline: 56 bytes */ }; struct addrs_head { struct unicast_master_address * stqh_first; /* 0 8 */ struct unicast_master_address * * stqh_last; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct unicast_master_table { struct addrs_head addrs; /* 0 16 */ struct { struct unicast_master_table * stqe_next; /* 16 8 */ } list; /* 16 8 */ Integer8 logQueryInterval; /* 24 1 */ /* XXX 3 bytes hole, try to pack */ int table_index; /* 28 4 */ int count; /* 32 4 */ int port; /* 36 4 */ struct unicast_master_address peer_addr; /* 40 184 */ /* --- cacheline 3 boundary (192 bytes) was 32 bytes ago --- */ char * peer_name; /* 224 8 */ /* size: 232, cachelines: 4, members: 8 */ /* sum members: 229, holes: 1, sum holes: 3 */ /* last cacheline: 40 bytes */ }; struct interfaces_head { struct interface * stqh_first; /* 0 8 */ struct interface * * stqh_last; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct ucmtab_head { struct unicast_master_table * stqh_first; /* 0 8 */ struct unicast_master_table * * stqh_last; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct config { struct interfaces_head interfaces; /* 0 16 */ int n_interfaces; /* 16 4 */ /* XXX 4 bytes hole, try to pack */ struct option * opts; /* 24 8 */ struct hash * htab; /* 32 8 */ struct ucmtab_head unicast_master_tables; /* 40 16 */ /* size: 56, cachelines: 1, members: 5 */ /* sum members: 52, holes: 1, sum holes: 4 */ /* last cacheline: 56 bytes */ }; struct ClockQuality { UInteger8 clockClass; /* 0 1 */ Enumeration8 clockAccuracy; /* 1 1 */ UInteger16 offsetScaledLogVariance; /* 2 2 */ /* size: 4, cachelines: 1, members: 3 */ /* last cacheline: 4 bytes */ }; struct dataset { UInteger8 priority1; /* 0 1 */ struct ClockIdentity identity; /* 1 8 */ struct ClockQuality quality; /* 9 4 */ UInteger8 priority2; /* 13 1 */ UInteger8 localPriority; /* 14 1 */ /* XXX 1 byte hole, try to pack */ UInteger16 stepsRemoved; /* 16 2 */ struct PortIdentity sender; /* 18 10 */ struct PortIdentity receiver; /* 28 10 */ /* size: 38, cachelines: 1, members: 8 */ /* sum members: 37, holes: 1, sum holes: 1 */ /* last cacheline: 38 bytes */ }; struct timespec { __time_t tv_sec; /* 0 8 */ __syscall_slong_t tv_nsec; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct pollfd { int fd; /* 0 4 */ short int events; /* 4 2 */ short int revents; /* 6 2 */ /* size: 8, cachelines: 1, members: 3 */ /* last cacheline: 8 bytes */ }; struct Timestamp { uint16_t seconds_msb; /* 0 2 */ uint32_t seconds_lsb; /* 2 4 */ UInteger32 nanoseconds; /* 6 4 */ /* size: 10, cachelines: 1, members: 3 */ /* last cacheline: 10 bytes */ } __attribute__((__packed__)); struct timestamp { uint64_t sec; /* 0 8 */ UInteger32 nsec; /* 8 4 */ /* size: 16, cachelines: 1, members: 2 */ /* padding: 4 */ /* last cacheline: 16 bytes */ }; struct PortAddress { Enumeration16 networkProtocol; /* 0 2 */ UInteger16 addressLength; /* 2 2 */ Octet address[]; /* 4 0 */ /* size: 4, cachelines: 1, members: 3 */ /* last cacheline: 4 bytes */ }; struct PhysicalAddress { UInteger16 length; /* 0 2 */ Octet address[]; /* 2 0 */ /* size: 2, cachelines: 1, members: 2 */ /* last cacheline: 2 bytes */ }; struct TLV { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ Octet value[]; /* 4 0 */ /* size: 4, cachelines: 1, members: 3 */ /* last cacheline: 4 bytes */ }; struct PTPText { UInteger8 length; /* 0 1 */ Octet text[]; /* 1 0 */ /* size: 1, cachelines: 1, members: 2 */ /* last cacheline: 1 bytes */ }; struct static_ptp_text { Octet text[256]; /* 0 256 */ /* --- cacheline 4 boundary (256 bytes) --- */ int length; /* 256 4 */ int max_symbols; /* 260 4 */ /* size: 264, cachelines: 5, members: 3 */ /* last cacheline: 8 bytes */ }; struct fault_interval { enum fault_tmo_type type; /* 0 4 */ int32_t val; /* 4 4 */ /* size: 8, cachelines: 1, members: 2 */ /* last cacheline: 8 bytes */ }; struct defaultDS { UInteger8 flags; /* 0 1 */ UInteger8 reserved1; /* 1 1 */ UInteger16 numberPorts; /* 2 2 */ UInteger8 priority1; /* 4 1 */ struct ClockQuality clockQuality; /* 5 4 */ UInteger8 priority2; /* 9 1 */ struct ClockIdentity clockIdentity; /* 10 8 */ UInteger8 domainNumber; /* 18 1 */ UInteger8 reserved2; /* 19 1 */ /* size: 20, cachelines: 1, members: 9 */ /* last cacheline: 20 bytes */ } __attribute__((__packed__)); struct clock_description { struct static_ptp_text productDescription; /* 0 264 */ /* --- cacheline 4 boundary (256 bytes) was 8 bytes ago --- */ struct static_ptp_text revisionData; /* 264 264 */ /* --- cacheline 8 boundary (512 bytes) was 16 bytes ago --- */ struct static_ptp_text userDescription; /* 528 264 */ /* --- cacheline 12 boundary (768 bytes) was 24 bytes ago --- */ Octet manufacturerIdentity[3]; /* 792 3 */ /* size: 796, cachelines: 13, members: 4 */ /* padding: 1 */ /* last cacheline: 28 bytes */ }; struct currentDS { UInteger16 stepsRemoved; /* 0 2 */ TimeInterval offsetFromMaster; /* 2 8 */ TimeInterval meanPathDelay; /* 10 8 */ /* size: 18, cachelines: 1, members: 3 */ /* last cacheline: 18 bytes */ } __attribute__((__packed__)); struct parentDS { struct PortIdentity parentPortIdentity; /* 0 10 */ UInteger8 parentStats; /* 10 1 */ UInteger8 reserved; /* 11 1 */ UInteger16 observedParentOffsetScaledLogVariance; /* 12 2 */ Integer32 observedParentClockPhaseChangeRate; /* 14 4 */ UInteger8 grandmasterPriority1; /* 18 1 */ struct ClockQuality grandmasterClockQuality; /* 19 4 */ UInteger8 grandmasterPriority2; /* 23 1 */ struct ClockIdentity grandmasterIdentity; /* 24 8 */ /* size: 32, cachelines: 1, members: 9 */ /* last cacheline: 32 bytes */ } __attribute__((__packed__)); struct parent_ds { struct parentDS pds; /* 0 32 */ struct ClockIdentity * ptl; /* 32 8 */ unsigned int path_length; /* 40 4 */ /* size: 48, cachelines: 1, members: 3 */ /* padding: 4 */ /* last cacheline: 48 bytes */ }; struct timePropertiesDS { Integer16 currentUtcOffset; /* 0 2 */ UInteger8 flags; /* 2 1 */ Enumeration8 timeSource; /* 3 1 */ /* size: 4, cachelines: 1, members: 3 */ /* last cacheline: 4 bytes */ }; struct fdarray { int fd[11]; /* 0 44 */ /* size: 44, cachelines: 1, members: 1 */ /* last cacheline: 44 bytes */ }; struct alternate_time_offset_indicator_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ UInteger8 keyField; /* 4 1 */ Integer32 currentOffset; /* 5 4 */ Integer32 jumpSeconds; /* 9 4 */ struct { uint16_t seconds_msb; /* 13 2 */ uint32_t seconds_lsb; /* 15 4 */ } __attribute__((__packed__)) timeOfNextJump; /* 13 6 */ struct PTPText displayName; /* 19 1 */ /* size: 20, cachelines: 1, members: 7 */ /* last cacheline: 20 bytes */ } __attribute__((__packed__)); struct alternate_time_offset_name { UInteger8 keyField; /* 0 1 */ struct PTPText displayName; /* 1 1 */ /* size: 2, cachelines: 1, members: 2 */ /* last cacheline: 2 bytes */ }; struct alternate_time_offset_properties { UInteger8 keyField; /* 0 1 */ Integer32 currentOffset; /* 1 4 */ Integer32 jumpSeconds; /* 5 4 */ struct { uint16_t seconds_msb; /* 9 2 */ uint32_t seconds_lsb; /* 11 4 */ } __attribute__((__packed__)) timeOfNextJump; /* 9 6 */ uint8_t pad; /* 15 1 */ /* size: 16, cachelines: 1, members: 5 */ /* last cacheline: 16 bytes */ } __attribute__((__packed__)); struct management_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ Enumeration16 id; /* 4 2 */ Octet data[]; /* 6 0 */ /* size: 6, cachelines: 1, members: 4 */ /* last cacheline: 6 bytes */ }; struct management_tlv_datum { uint8_t val; /* 0 1 */ uint8_t reserved; /* 1 1 */ /* size: 2, cachelines: 1, members: 2 */ /* last cacheline: 2 bytes */ }; struct nsm_resp_tlv_foot { struct parentDS parent; /* 0 32 */ struct currentDS current; /* 32 18 */ struct timePropertiesDS timeprop; /* 50 4 */ struct Timestamp lastsync; /* 54 10 */ /* size: 64, cachelines: 1, members: 4 */ } __attribute__((__packed__)); struct Integer96 { uint16_t nanoseconds_msb; /* 0 2 */ uint64_t nanoseconds_lsb; /* 2 8 */ uint16_t fractional_nanoseconds; /* 10 2 */ /* size: 12, cachelines: 1, members: 3 */ /* last cacheline: 12 bytes */ } __attribute__((__packed__)); struct follow_up_info_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ Octet id[3]; /* 4 3 */ Octet subtype[3]; /* 7 3 */ Integer32 cumulativeScaledRateOffset; /* 10 4 */ UInteger16 gmTimeBaseIndicator; /* 14 2 */ ScaledNs lastGmPhaseChange; /* 16 12 */ Integer32 scaledLastGmPhaseChange; /* 28 4 */ /* size: 32, cachelines: 1, members: 8 */ /* last cacheline: 32 bytes */ } __attribute__((__packed__)); struct time_status_np { int64_t master_offset; /* 0 8 */ int64_t ingress_time; /* 8 8 */ Integer32 cumulativeScaledRateOffset; /* 16 4 */ Integer32 scaledLastGmPhaseChange; /* 20 4 */ UInteger16 gmTimeBaseIndicator; /* 24 2 */ ScaledNs lastGmPhaseChange; /* 26 12 */ Integer32 gmPresent; /* 38 4 */ struct ClockIdentity gmIdentity; /* 42 8 */ /* size: 50, cachelines: 1, members: 8 */ /* last cacheline: 50 bytes */ } __attribute__((__packed__)); struct grandmaster_settings_np { struct ClockQuality clockQuality; /* 0 4 */ Integer16 utc_offset; /* 4 2 */ UInteger8 time_flags; /* 6 1 */ Enumeration8 time_source; /* 7 1 */ /* size: 8, cachelines: 1, members: 4 */ /* last cacheline: 8 bytes */ }; struct subscribe_events_np { uint16_t duration; /* 0 2 */ uint8_t bitmask[64]; /* 2 64 */ /* size: 66, cachelines: 2, members: 2 */ /* last cacheline: 2 bytes */ }; struct mgmt_clock_description { UInteger16 * clockType; /* 0 8 */ struct PTPText * physicalLayerProtocol; /* 8 8 */ struct PhysicalAddress * physicalAddress; /* 16 8 */ struct PortAddress * protocolAddress; /* 24 8 */ Octet * manufacturerIdentity; /* 32 8 */ struct PTPText * productDescription; /* 40 8 */ struct PTPText * revisionData; /* 48 8 */ struct PTPText * userDescription; /* 56 8 */ /* --- cacheline 1 boundary (64 bytes) --- */ Octet * profileIdentity; /* 64 8 */ /* size: 72, cachelines: 2, members: 9 */ /* last cacheline: 8 bytes */ }; struct tlv_extra { struct { struct tlv_extra * tqe_next; /* 0 8 */ struct tlv_extra * * tqe_prev; /* 8 8 */ } list; /* 0 16 */ struct TLV * tlv; /* 16 8 */ union { struct mgmt_clock_description cd; /* 24 72 */ struct nsm_resp_tlv_foot * foot; /* 24 8 */ }; /* 24 72 */ /* size: 96, cachelines: 2, members: 3 */ /* last cacheline: 32 bytes */ }; struct hw_timestamp { enum timestamp_type type; /* 0 4 */ /* XXX 4 bytes hole, try to pack */ tmv_t ts; /* 8 8 */ tmv_t sw; /* 16 8 */ /* size: 24, cachelines: 1, members: 3 */ /* sum members: 20, holes: 1, sum holes: 4 */ /* last cacheline: 24 bytes */ }; struct ptp_header { uint8_t tsmt; /* 0 1 */ uint8_t ver; /* 1 1 */ UInteger16 messageLength; /* 2 2 */ UInteger8 domainNumber; /* 4 1 */ Octet reserved1; /* 5 1 */ Octet flagField[2]; /* 6 2 */ Integer64 correction; /* 8 8 */ UInteger32 reserved2; /* 16 4 */ struct PortIdentity sourcePortIdentity; /* 20 10 */ UInteger16 sequenceId; /* 30 2 */ UInteger8 control; /* 32 1 */ Integer8 logMessageInterval; /* 33 1 */ /* size: 34, cachelines: 1, members: 12 */ /* last cacheline: 34 bytes */ } __attribute__((__packed__)); struct announce_msg { struct ptp_header hdr; /* 0 34 */ struct Timestamp originTimestamp; /* 34 10 */ Integer16 currentUtcOffset; /* 44 2 */ Octet reserved; /* 46 1 */ UInteger8 grandmasterPriority1; /* 47 1 */ struct ClockQuality grandmasterClockQuality; /* 48 4 */ UInteger8 grandmasterPriority2; /* 52 1 */ struct ClockIdentity grandmasterIdentity; /* 53 8 */ UInteger16 stepsRemoved; /* 61 2 */ Enumeration8 timeSource; /* 63 1 */ /* --- cacheline 1 boundary (64 bytes) --- */ uint8_t suffix[]; /* 64 0 */ /* size: 64, cachelines: 1, members: 11 */ } __attribute__((__packed__)); struct sync_msg { struct ptp_header hdr; /* 0 34 */ struct Timestamp originTimestamp; /* 34 10 */ uint8_t suffix[]; /* 44 0 */ /* size: 44, cachelines: 1, members: 3 */ /* last cacheline: 44 bytes */ } __attribute__((__packed__)); struct delay_req_msg { struct ptp_header hdr; /* 0 34 */ struct Timestamp originTimestamp; /* 34 10 */ uint8_t suffix[]; /* 44 0 */ /* size: 44, cachelines: 1, members: 3 */ /* last cacheline: 44 bytes */ } __attribute__((__packed__)); struct follow_up_msg { struct ptp_header hdr; /* 0 34 */ struct Timestamp preciseOriginTimestamp; /* 34 10 */ uint8_t suffix[]; /* 44 0 */ /* size: 44, cachelines: 1, members: 3 */ /* last cacheline: 44 bytes */ } __attribute__((__packed__)); struct delay_resp_msg { struct ptp_header hdr; /* 0 34 */ struct Timestamp receiveTimestamp; /* 34 10 */ struct PortIdentity requestingPortIdentity; /* 44 10 */ uint8_t suffix[]; /* 54 0 */ /* size: 54, cachelines: 1, members: 4 */ /* last cacheline: 54 bytes */ } __attribute__((__packed__)); struct pdelay_req_msg { struct ptp_header hdr; /* 0 34 */ struct Timestamp originTimestamp; /* 34 10 */ struct PortIdentity reserved; /* 44 10 */ uint8_t suffix[]; /* 54 0 */ /* size: 54, cachelines: 1, members: 4 */ /* last cacheline: 54 bytes */ } __attribute__((__packed__)); struct pdelay_resp_msg { struct ptp_header hdr; /* 0 34 */ struct Timestamp requestReceiptTimestamp; /* 34 10 */ struct PortIdentity requestingPortIdentity; /* 44 10 */ uint8_t suffix[]; /* 54 0 */ /* size: 54, cachelines: 1, members: 4 */ /* last cacheline: 54 bytes */ } __attribute__((__packed__)); struct pdelay_resp_fup_msg { struct ptp_header hdr; /* 0 34 */ struct Timestamp responseOriginTimestamp; /* 34 10 */ struct PortIdentity requestingPortIdentity; /* 44 10 */ uint8_t suffix[]; /* 54 0 */ /* size: 54, cachelines: 1, members: 4 */ /* last cacheline: 54 bytes */ } __attribute__((__packed__)); struct signaling_msg { struct ptp_header hdr; /* 0 34 */ struct PortIdentity targetPortIdentity; /* 34 10 */ uint8_t suffix[]; /* 44 0 */ /* size: 44, cachelines: 1, members: 3 */ /* last cacheline: 44 bytes */ } __attribute__((__packed__)); struct management_msg { struct ptp_header hdr; /* 0 34 */ struct PortIdentity targetPortIdentity; /* 34 10 */ UInteger8 startingBoundaryHops; /* 44 1 */ UInteger8 boundaryHops; /* 45 1 */ uint8_t flags; /* 46 1 */ uint8_t reserved; /* 47 1 */ uint8_t suffix[]; /* 48 0 */ /* size: 48, cachelines: 1, members: 7 */ /* last cacheline: 48 bytes */ }; struct message_data { uint8_t buffer[1500]; /* 0 1500 */ /* size: 1500, cachelines: 24, members: 1 */ /* last cacheline: 28 bytes */ }; struct ptp_message { union { struct ptp_header header; /* 0 34 */ struct announce_msg announce; /* 0 64 */ struct sync_msg sync; /* 0 44 */ struct delay_req_msg delay_req; /* 0 44 */ struct follow_up_msg follow_up; /* 0 44 */ struct delay_resp_msg delay_resp; /* 0 54 */ struct pdelay_req_msg pdelay_req; /* 0 54 */ struct pdelay_resp_msg pdelay_resp; /* 0 54 */ struct pdelay_resp_fup_msg pdelay_resp_fup; /* 0 54 */ struct signaling_msg signaling; /* 0 44 */ struct management_msg management; /* 0 48 */ struct message_data data; /* 0 1500 */ }; /* 0 1500 */ /* --- cacheline 23 boundary (1472 bytes) was 28 bytes ago --- */ int tail_room; /* 1500 4 */ int refcnt; /* 1504 4 */ /* XXX 4 bytes hole, try to pack */ struct { struct ptp_message * tqe_next; /* 1512 8 */ struct ptp_message * * tqe_prev; /* 1520 8 */ } list; /* 1512 16 */ struct { struct timestamp pdu; /* 1528 16 */ /* XXX last struct has 4 bytes of padding */ /* --- cacheline 24 boundary (1536 bytes) was 8 bytes ago --- */ struct timespec host; /* 1544 16 */ } ts; /* 1528 32 */ struct hw_timestamp hwts; /* 1560 24 */ struct address address; /* 1584 136 */ /* --- cacheline 26 boundary (1664 bytes) was 56 bytes ago --- */ struct tlv_list tlv_list; /* 1720 16 */ /* size: 1736, cachelines: 28, members: 8 */ /* sum members: 1732, holes: 1, sum holes: 4 */ /* last cacheline: 8 bytes */ }; struct tlv_list { struct tlv_extra * tqh_first; /* 0 8 */ struct tlv_extra * * tqh_last; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct interface { struct { struct interface * stqe_next; /* 0 8 */ } list; /* 0 8 */ /* size: 8, cachelines: 1, members: 1 */ /* last cacheline: 8 bytes */ }; struct foreign_clock { struct { struct foreign_clock * le_next; /* 0 8 */ struct foreign_clock * * le_prev; /* 8 8 */ } list; /* 0 16 */ struct messages messages; /* 16 16 */ unsigned int n_messages; /* 32 4 */ /* XXX 4 bytes hole, try to pack */ struct port * port; /* 40 8 */ struct dataset dataset; /* 48 38 */ /* size: 88, cachelines: 2, members: 5 */ /* sum members: 82, holes: 1, sum holes: 4 */ /* padding: 2 */ /* last cacheline: 24 bytes */ }; struct messages { struct ptp_message * tqh_first; /* 0 8 */ struct ptp_message * * tqh_last; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct port { struct { struct port * le_next; /* 0 8 */ struct port * * le_prev; /* 8 8 */ } list; /* 0 16 */ /* size: 16, cachelines: 1, members: 1 */ /* last cacheline: 16 bytes */ }; struct stats_result { double min; /* 0 8 */ double max; /* 8 8 */ double max_abs; /* 16 8 */ double mean; /* 24 8 */ double rms; /* 32 8 */ double stddev; /* 40 8 */ /* size: 48, cachelines: 1, members: 6 */ /* last cacheline: 48 bytes */ }; struct freq_estimator { tmv_t origin1; /* 0 8 */ tmv_t ingress1; /* 8 8 */ unsigned int max_count; /* 16 4 */ unsigned int count; /* 20 4 */ /* size: 24, cachelines: 1, members: 4 */ /* last cacheline: 24 bytes */ }; struct clock_stats { struct stats * offset; /* 0 8 */ struct stats * freq; /* 8 8 */ struct stats * delay; /* 16 8 */ unsigned int max_count; /* 24 4 */ /* size: 32, cachelines: 1, members: 4 */ /* padding: 4 */ /* last cacheline: 32 bytes */ }; struct clock_subscriber { struct { struct clock_subscriber * le_next; /* 0 8 */ struct clock_subscriber * * le_prev; /* 8 8 */ } list; /* 0 16 */ uint8_t events[64]; /* 16 64 */ /* --- cacheline 1 boundary (64 bytes) was 16 bytes ago --- */ struct PortIdentity targetPortIdentity; /* 80 10 */ /* XXX 6 bytes hole, try to pack */ struct address addr; /* 96 136 */ /* --- cacheline 3 boundary (192 bytes) was 40 bytes ago --- */ UInteger16 sequenceId; /* 232 2 */ /* XXX 6 bytes hole, try to pack */ time_t expiration; /* 240 8 */ /* size: 248, cachelines: 4, members: 6 */ /* sum members: 236, holes: 2, sum holes: 12 */ /* last cacheline: 56 bytes */ }; struct time_zone { _Bool enabled; /* 0 1 */ /* XXX 3 bytes hole, try to pack */ int32_t current_offset; /* 4 4 */ int32_t jump_seconds; /* 8 4 */ uint16_t next_jump_msb; /* 12 2 */ /* XXX 2 bytes hole, try to pack */ uint32_t next_jump_lsb; /* 16 4 */ struct static_ptp_text display_name; /* 20 264 */ /* size: 284, cachelines: 5, members: 6 */ /* sum members: 279, holes: 2, sum holes: 5 */ /* last cacheline: 28 bytes */ }; struct ports_head { struct port * lh_first; /* 0 8 */ /* size: 8, cachelines: 1, members: 1 */ /* last cacheline: 8 bytes */ }; struct clock_subscribers_head { struct clock_subscriber * lh_first; /* 0 8 */ /* size: 8, cachelines: 1, members: 1 */ /* last cacheline: 8 bytes */ }; struct clock { enum clock_type type; /* 0 4 */ /* XXX 4 bytes hole, try to pack */ struct config * config; /* 8 8 */ clockid_t clkid; /* 16 4 */ /* XXX 4 bytes hole, try to pack */ struct servo * servo; /* 24 8 */ enum servo_type servo_type; /* 32 4 */ /* XXX 4 bytes hole, try to pack */ int (*dscmp)(struct dataset *, struct dataset *); /* 40 8 */ struct defaultDS dds; /* 48 20 */ /* --- cacheline 1 boundary (64 bytes) was 4 bytes ago --- */ struct dataset default_dataset; /* 68 38 */ struct currentDS cur; /* 106 18 */ /* XXX 4 bytes hole, try to pack */ /* --- cacheline 2 boundary (128 bytes) --- */ struct parent_ds dad; /* 128 48 */ /* XXX last struct has 4 bytes of padding */ struct timePropertiesDS tds; /* 176 4 */ struct ClockIdentity ptl[179]; /* 180 1432 */ /* XXX 4 bytes hole, try to pack */ /* --- cacheline 25 boundary (1600 bytes) was 16 bytes ago --- */ struct foreign_clock * best; /* 1616 8 */ struct ClockIdentity best_id; /* 1624 8 */ struct ports_head ports; /* 1632 8 */ struct port * uds_rw_port; /* 1640 8 */ struct port * uds_ro_port; /* 1648 8 */ struct pollfd * pollfd; /* 1656 8 */ /* --- cacheline 26 boundary (1664 bytes) --- */ int pollfd_valid; /* 1664 4 */ int nports; /* 1668 4 */ int last_port_number; /* 1672 4 */ int sde; /* 1676 4 */ int free_running; /* 1680 4 */ int freq_est_interval; /* 1684 4 */ int local_sync_uncertain; /* 1688 4 */ int write_phase_mode; /* 1692 4 */ int grand_master_capable; /* 1696 4 */ int utc_timescale; /* 1700 4 */ int utc_offset_set; /* 1704 4 */ int leap_set; /* 1708 4 */ int kernel_leap; /* 1712 4 */ int utc_offset; /* 1716 4 */ int time_flags; /* 1720 4 */ int time_source; /* 1724 4 */ /* --- cacheline 27 boundary (1728 bytes) --- */ UInteger8 clock_class_threshold; /* 1728 1 */ UInteger8 max_steps_removed; /* 1729 1 */ /* XXX 2 bytes hole, try to pack */ enum servo_state servo_state; /* 1732 4 */ enum timestamp_type timestamping; /* 1736 4 */ /* XXX 4 bytes hole, try to pack */ tmv_t master_offset; /* 1744 8 */ tmv_t path_delay; /* 1752 8 */ tmv_t ingress_ts; /* 1760 8 */ tmv_t initial_delay; /* 1768 8 */ struct tsproc * tsproc; /* 1776 8 */ struct freq_estimator fest; /* 1784 24 */ /* --- cacheline 28 boundary (1792 bytes) was 16 bytes ago --- */ struct time_status_np status; /* 1808 50 */ /* XXX 6 bytes hole, try to pack */ /* --- cacheline 29 boundary (1856 bytes) was 8 bytes ago --- */ double master_local_rr; /* 1864 8 */ double nrr; /* 1872 8 */ struct clock_description desc; /* 1880 796 */ /* XXX last struct has 1 byte of padding */ /* XXX 4 bytes hole, try to pack */ /* --- cacheline 41 boundary (2624 bytes) was 56 bytes ago --- */ struct clock_stats stats; /* 2680 32 */ /* XXX last struct has 4 bytes of padding */ /* --- cacheline 42 boundary (2688 bytes) was 24 bytes ago --- */ int stats_interval; /* 2712 4 */ /* XXX 4 bytes hole, try to pack */ struct clockcheck * sanity_check; /* 2720 8 */ struct interface * uds_rw_if; /* 2728 8 */ struct interface * uds_ro_if; /* 2736 8 */ struct clock_subscribers_head subscribers; /* 2744 8 */ /* --- cacheline 43 boundary (2752 bytes) --- */ struct monitor * slave_event_monitor; /* 2752 8 */ int step_window_counter; /* 2760 4 */ int step_window; /* 2764 4 */ struct time_zone tz[4]; /* 2768 1136 */ /* size: 3904, cachelines: 61, members: 58 */ /* sum members: 3864, holes: 10, sum holes: 40 */ /* paddings: 3, sum paddings: 9 */ }; struct timeval { __time_t tv_sec; /* 0 8 */ __suseconds_t tv_usec; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct timex { unsigned int modes; /* 0 4 */ /* XXX 4 bytes hole, try to pack */ __syscall_slong_t offset; /* 8 8 */ __syscall_slong_t freq; /* 16 8 */ __syscall_slong_t maxerror; /* 24 8 */ __syscall_slong_t esterror; /* 32 8 */ int status; /* 40 4 */ /* XXX 4 bytes hole, try to pack */ __syscall_slong_t constant; /* 48 8 */ __syscall_slong_t precision; /* 56 8 */ /* --- cacheline 1 boundary (64 bytes) --- */ __syscall_slong_t tolerance; /* 64 8 */ struct timeval time; /* 72 16 */ __syscall_slong_t tick; /* 88 8 */ __syscall_slong_t ppsfreq; /* 96 8 */ __syscall_slong_t jitter; /* 104 8 */ int shift; /* 112 4 */ /* XXX 4 bytes hole, try to pack */ __syscall_slong_t stabil; /* 120 8 */ /* --- cacheline 2 boundary (128 bytes) --- */ __syscall_slong_t jitcnt; /* 128 8 */ __syscall_slong_t calcnt; /* 136 8 */ __syscall_slong_t errcnt; /* 144 8 */ __syscall_slong_t stbcnt; /* 152 8 */ int tai; /* 160 4 */ /* Force padding: */ int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; /* size: 208, cachelines: 4, members: 20 */ /* sum members: 152, holes: 3, sum holes: 12 */ /* padding: 44 */ /* last cacheline: 16 bytes */ }; struct clockcheck { int freq_limit; /* 0 4 */ int freq_known; /* 4 4 */ int current_freq; /* 8 4 */ int max_freq; /* 12 4 */ int min_freq; /* 16 4 */ /* XXX 4 bytes hole, try to pack */ uint64_t last_ts; /* 24 8 */ uint64_t last_mono_ts; /* 32 8 */ /* size: 40, cachelines: 1, members: 7 */ /* sum members: 36, holes: 1, sum holes: 4 */ /* last cacheline: 40 bytes */ }; struct config_enum { const char * label; /* 0 8 */ int value; /* 8 4 */ /* size: 16, cachelines: 1, members: 2 */ /* padding: 4 */ /* last cacheline: 16 bytes */ }; struct config_item { char label[64]; /* 0 64 */ /* --- cacheline 1 boundary (64 bytes) --- */ enum config_type type; /* 64 4 */ /* XXX 4 bytes hole, try to pack */ struct config_enum * tab; /* 72 8 */ unsigned int flags; /* 80 4 */ /* XXX 4 bytes hole, try to pack */ any_t val; /* 88 8 */ any_t min; /* 96 8 */ any_t max; /* 104 8 */ /* size: 112, cachelines: 2, members: 7 */ /* sum members: 104, holes: 2, sum holes: 8 */ /* last cacheline: 48 bytes */ }; struct PortStats { uint64_t rxMsgType[16]; /* 0 128 */ /* --- cacheline 2 boundary (128 bytes) --- */ uint64_t txMsgType[16]; /* 128 128 */ /* size: 256, cachelines: 4, members: 2 */ }; struct PortServiceStats { uint64_t announce_timeout; /* 0 8 */ uint64_t sync_timeout; /* 8 8 */ uint64_t delay_timeout; /* 16 8 */ uint64_t unicast_service_timeout; /* 24 8 */ uint64_t unicast_request_timeout; /* 32 8 */ uint64_t master_announce_timeout; /* 40 8 */ uint64_t master_sync_timeout; /* 48 8 */ uint64_t qualification_timeout; /* 56 8 */ /* --- cacheline 1 boundary (64 bytes) --- */ uint64_t sync_mismatch; /* 64 8 */ uint64_t followup_mismatch; /* 72 8 */ /* size: 80, cachelines: 2, members: 10 */ /* last cacheline: 16 bytes */ }; struct port { struct { struct port * le_next; /* 0 8 */ struct port * * le_prev; /* 8 8 */ } list; /* 0 16 */ const char * name; /* 16 8 */ char * log_name; /* 24 8 */ struct interface * iface; /* 32 8 */ struct clock * clock; /* 40 8 */ struct transport * trp; /* 48 8 */ enum timestamp_type timestamping; /* 56 4 */ struct fdarray fda; /* 60 44 */ /* --- cacheline 1 boundary (64 bytes) was 40 bytes ago --- */ int fault_fd; /* 104 4 */ int phc_index; /* 108 4 */ int phc_from_cmdline; /* 112 4 */ /* XXX 4 bytes hole, try to pack */ void (*dispatch)(struct port *, enum fsm_event, int); /* 120 8 */ /* --- cacheline 2 boundary (128 bytes) --- */ enum fsm_event (*event)(struct port *, int); /* 128 8 */ int jbod; /* 136 4 */ /* XXX 4 bytes hole, try to pack */ struct foreign_clock * best; /* 144 8 */ enum syfu_state syfu; /* 152 4 */ /* XXX 4 bytes hole, try to pack */ struct ptp_message * last_syncfup; /* 160 8 */ struct delay_req delay_req; /* 168 16 */ struct ptp_message * peer_delay_req; /* 184 8 */ /* --- cacheline 3 boundary (192 bytes) --- */ struct ptp_message * peer_delay_resp; /* 192 8 */ struct ptp_message * peer_delay_fup; /* 200 8 */ int peer_portid_valid; /* 208 4 */ struct PortIdentity peer_portid; /* 212 10 */ struct { UInteger16 announce; /* 222 2 */ UInteger16 delayreq; /* 224 2 */ UInteger16 signaling; /* 226 2 */ UInteger16 sync; /* 228 2 */ } seqnum; /* 222 8 */ /* XXX 2 bytes hole, try to pack */ tmv_t peer_delay; /* 232 8 */ struct tsproc * tsproc; /* 240 8 */ int log_sync_interval; /* 248 4 */ /* XXX 4 bytes hole, try to pack */ /* --- cacheline 4 boundary (256 bytes) --- */ struct nrate_estimator nrate; /* 256 40 */ /* XXX last struct has 4 bytes of padding */ unsigned int pdr_missing; /* 296 4 */ unsigned int multiple_seq_pdr_count; /* 300 4 */ unsigned int multiple_pdr_detected; /* 304 4 */ /* XXX 4 bytes hole, try to pack */ enum port_state (*state_machine)(enum port_state, enum fsm_event, int); /* 312 8 */ /* --- cacheline 5 boundary (320 bytes) --- */ int bmca; /* 320 4 */ int inhibit_announce; /* 324 4 */ int ignore_source_id; /* 328 4 */ int inhibit_delay_req; /* 332 4 */ struct PortIdentity portIdentity; /* 336 10 */ /* XXX 2 bytes hole, try to pack */ enum port_state state; /* 348 4 */ Integer64 asymmetry; /* 352 8 */ enum as_capable asCapable; /* 360 4 */ Integer8 logMinDelayReqInterval; /* 364 1 */ /* XXX 3 bytes hole, try to pack */ TimeInterval peerMeanPathDelay; /* 368 8 */ Integer8 initialLogAnnounceInterval; /* 376 1 */ Integer8 logAnnounceInterval; /* 377 1 */ UInteger8 announceReceiptTimeout; /* 378 1 */ /* XXX 1 byte hole, try to pack */ int announce_span; /* 380 4 */ /* --- cacheline 6 boundary (384 bytes) --- */ UInteger8 syncReceiptTimeout; /* 384 1 */ UInteger8 transportSpecific; /* 385 1 */ UInteger8 localPriority; /* 386 1 */ Integer8 initialLogSyncInterval; /* 387 1 */ Integer8 operLogSyncInterval; /* 388 1 */ Integer8 logSyncInterval; /* 389 1 */ Enumeration8 delayMechanism; /* 390 1 */ Integer8 logMinPdelayReqInterval; /* 391 1 */ Integer8 operLogPdelayReqInterval; /* 392 1 */ Integer8 logPdelayReqInterval; /* 393 1 */ /* XXX 2 bytes hole, try to pack */ UInteger32 neighborPropDelayThresh; /* 396 4 */ int follow_up_info; /* 400 4 */ int freq_est_interval; /* 404 4 */ int hybrid_e2e; /* 408 4 */ int master_only; /* 412 4 */ int match_transport_specific; /* 416 4 */ int msg_interval_request; /* 420 4 */ int min_neighbor_prop_delay; /* 424 4 */ int net_sync_monitor; /* 428 4 */ int path_trace_enabled; /* 432 4 */ int tc_spanning_tree; /* 436 4 */ Integer64 rx_timestamp_offset; /* 440 8 */ /* --- cacheline 7 boundary (448 bytes) --- */ Integer64 tx_timestamp_offset; /* 448 8 */ int unicast_req_duration; /* 456 4 */ enum link_state link_status; /* 460 4 */ struct fault_interval flt_interval_pertype[3]; /* 464 24 */ enum fault_type last_fault_type; /* 488 4 */ UInteger8 versionNumber; /* 492 1 */ UInteger8 delay_response_counter; /* 493 1 */ UInteger8 delay_response_timeout; /* 494 1 */ _Bool iface_rate_tlv; /* 495 1 */ Integer64 portAsymmetry; /* 496 8 */ struct PortStats stats; /* 504 256 */ /* --- cacheline 11 boundary (704 bytes) was 56 bytes ago --- */ struct PortServiceStats service_stats; /* 760 80 */ /* --- cacheline 13 boundary (832 bytes) was 8 bytes ago --- */ struct fm foreign_masters; /* 840 8 */ struct tct tc_transmitted; /* 848 16 */ struct ieee_c37_238_settings_np pwr; /* 864 16 */ struct unicast_master_table * unicast_master_table; /* 880 8 */ struct unicast_service * unicast_service; /* 888 8 */ /* --- cacheline 14 boundary (896 bytes) --- */ int inhibit_multicast_service; /* 896 4 */ /* XXX 4 bytes hole, try to pack */ struct monitor * slave_event_monitor; /* 904 8 */ _Bool unicast_state_dirty; /* 912 1 */ /* size: 920, cachelines: 15, members: 88 */ /* sum members: 879, holes: 11, sum holes: 34 */ /* padding: 7 */ /* paddings: 1, sum paddings: 4 */ /* last cacheline: 24 bytes */ }; struct ieee_c37_238_settings_np { Enumeration16 version; /* 0 2 */ UInteger16 grandmasterID; /* 2 2 */ UInteger32 grandmasterTimeInaccuracy; /* 4 4 */ UInteger32 networkTimeInaccuracy; /* 8 4 */ UInteger32 totalTimeInaccuracy; /* 12 4 */ /* size: 16, cachelines: 1, members: 5 */ /* last cacheline: 16 bytes */ }; struct nrate_estimator { double ratio; /* 0 8 */ tmv_t origin1; /* 8 8 */ tmv_t ingress1; /* 16 8 */ unsigned int max_count; /* 24 4 */ unsigned int count; /* 28 4 */ int ratio_valid; /* 32 4 */ /* size: 40, cachelines: 1, members: 6 */ /* padding: 4 */ /* last cacheline: 40 bytes */ }; struct tc_txd { struct { struct tc_txd * tqe_next; /* 0 8 */ struct tc_txd * * tqe_prev; /* 8 8 */ } list; /* 0 16 */ struct ptp_message * msg; /* 16 8 */ tmv_t residence; /* 24 8 */ int ingress_port; /* 32 4 */ /* size: 40, cachelines: 1, members: 4 */ /* padding: 4 */ /* last cacheline: 40 bytes */ }; struct delay_req { struct ptp_message * tqh_first; /* 0 8 */ struct ptp_message * * tqh_last; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct fm { struct foreign_clock * lh_first; /* 0 8 */ /* size: 8, cachelines: 1, members: 1 */ /* last cacheline: 8 bytes */ }; struct tct { struct tc_txd * tqh_first; /* 0 8 */ struct tc_txd * * tqh_last; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct filter { void (*destroy)(struct filter *); /* 0 8 */ tmv_t (*sample)(struct filter *, tmv_t); /* 8 8 */ void (*reset)(struct filter *); /* 16 8 */ /* size: 24, cachelines: 1, members: 3 */ /* last cacheline: 24 bytes */ }; struct mave { struct filter filter; /* 0 24 */ int cnt; /* 24 4 */ int len; /* 28 4 */ int index; /* 32 4 */ /* XXX 4 bytes hole, try to pack */ tmv_t sum; /* 40 8 */ tmv_t * val; /* 48 8 */ /* size: 56, cachelines: 1, members: 6 */ /* sum members: 52, holes: 1, sum holes: 4 */ /* last cacheline: 56 bytes */ }; struct mmedian { struct filter filter; /* 0 24 */ int cnt; /* 24 4 */ int len; /* 28 4 */ int index; /* 32 4 */ /* XXX 4 bytes hole, try to pack */ int * order; /* 40 8 */ tmv_t * samples; /* 48 8 */ /* size: 56, cachelines: 1, members: 6 */ /* sum members: 52, holes: 1, sum holes: 4 */ /* last cacheline: 56 bytes */ }; struct node { char * key; /* 0 8 */ void * data; /* 8 8 */ struct node * next; /* 16 8 */ /* size: 24, cachelines: 1, members: 3 */ /* last cacheline: 24 bytes */ }; struct hash { struct node * table[200]; /* 0 1600 */ /* size: 1600, cachelines: 25, members: 1 */ }; struct sk_ts_info { int valid; /* 0 4 */ int phc_index; /* 4 4 */ unsigned int so_timestamping; /* 8 4 */ unsigned int tx_types; /* 12 4 */ unsigned int rx_filters; /* 16 4 */ /* size: 20, cachelines: 1, members: 5 */ /* last cacheline: 20 bytes */ }; struct sk_if_info { _Bool valid; /* 0 1 */ /* XXX 3 bytes hole, try to pack */ uint32_t speed; /* 4 4 */ uint64_t iface_bit_period; /* 8 8 */ /* size: 16, cachelines: 1, members: 3 */ /* sum members: 13, holes: 1, sum holes: 3 */ /* last cacheline: 16 bytes */ }; struct interface { struct { struct interface * stqe_next; /* 0 8 */ } list; /* 0 8 */ char name[109]; /* 8 109 */ /* --- cacheline 1 boundary (64 bytes) was 53 bytes ago --- */ char ts_label[109]; /* 117 109 */ /* XXX 2 bytes hole, try to pack */ /* --- cacheline 3 boundary (192 bytes) was 36 bytes ago --- */ struct sk_ts_info ts_info; /* 228 20 */ struct sk_if_info if_info; /* 248 16 */ /* --- cacheline 4 boundary (256 bytes) was 8 bytes ago --- */ int vclock; /* 264 4 */ /* size: 272, cachelines: 5, members: 6 */ /* sum members: 266, holes: 1, sum holes: 2 */ /* padding: 4 */ /* last cacheline: 16 bytes */ }; struct slave_delay_timing_record { UInteger16 sequenceId; /* 0 2 */ struct Timestamp delayOriginTimestamp; /* 2 10 */ TimeInterval totalCorrectionField; /* 12 8 */ struct Timestamp delayResponseTimestamp; /* 20 10 */ /* size: 30, cachelines: 1, members: 4 */ /* last cacheline: 30 bytes */ } __attribute__((__packed__)); struct slave_delay_timing_data_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ struct PortIdentity sourcePortIdentity; /* 4 10 */ struct slave_delay_timing_record record[]; /* 14 0 */ /* size: 14, cachelines: 1, members: 4 */ /* last cacheline: 14 bytes */ } __attribute__((__packed__)); struct slave_rx_sync_timing_record { UInteger16 sequenceId; /* 0 2 */ struct Timestamp syncOriginTimestamp; /* 2 10 */ TimeInterval totalCorrectionField; /* 12 8 */ Integer32 scaledCumulativeRateOffset; /* 20 4 */ struct Timestamp syncEventIngressTimestamp; /* 24 10 */ /* size: 34, cachelines: 1, members: 5 */ /* last cacheline: 34 bytes */ } __attribute__((__packed__)); struct slave_rx_sync_timing_data_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ struct PortIdentity sourcePortIdentity; /* 4 10 */ struct slave_rx_sync_timing_record record[]; /* 14 0 */ /* size: 14, cachelines: 1, members: 4 */ /* last cacheline: 14 bytes */ } __attribute__((__packed__)); struct monitor_message { struct ptp_message * msg; /* 0 8 */ int records_per_msg; /* 8 4 */ int count; /* 12 4 */ /* size: 16, cachelines: 1, members: 3 */ /* last cacheline: 16 bytes */ }; struct monitor { struct port * dst_port; /* 0 8 */ struct slave_rx_sync_timing_data_tlv * sync_tlv; /* 8 8 */ struct slave_delay_timing_data_tlv * delay_tlv; /* 16 8 */ struct monitor_message delay; /* 24 16 */ struct monitor_message sync; /* 40 16 */ /* size: 56, cachelines: 1, members: 5 */ /* last cacheline: 56 bytes */ }; struct message_storage { unsigned char reserved[24]; /* 0 24 */ struct ptp_message msg __attribute__((__aligned__(8))); /* 24 1736 */ /* size: 1760, cachelines: 28, members: 2 */ /* forced alignments: 1 */ /* last cacheline: 32 bytes */ } __attribute__((__aligned__(8))); struct msg_pool { struct ptp_message * tqh_first; /* 0 8 */ struct ptp_message * * tqh_last; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct ptp_clock_caps { int max_adj; /* 0 4 */ int n_alarm; /* 4 4 */ int n_ext_ts; /* 8 4 */ int n_per_out; /* 12 4 */ int pps; /* 16 4 */ int n_pins; /* 20 4 */ int cross_timestamping; /* 24 4 */ int adjust_phase; /* 28 4 */ int max_phase_adj; /* 32 4 */ int rsv[11]; /* 36 44 */ /* size: 80, cachelines: 2, members: 10 */ /* last cacheline: 16 bytes */ }; struct ptp_pin_desc { char name[64]; /* 0 64 */ /* --- cacheline 1 boundary (64 bytes) --- */ unsigned int index; /* 64 4 */ unsigned int func; /* 68 4 */ unsigned int chan; /* 72 4 */ unsigned int rsv[5]; /* 76 20 */ /* size: 96, cachelines: 2, members: 5 */ /* last cacheline: 32 bytes */ }; struct unicast_master_entry { struct PortIdentity port_identity; /* 0 10 */ struct ClockQuality clock_quality; /* 10 4 */ uint8_t selected; /* 14 1 */ Enumeration8 port_state; /* 15 1 */ UInteger8 priority1; /* 16 1 */ UInteger8 priority2; /* 17 1 */ struct PortAddress address; /* 18 4 */ /* size: 22, cachelines: 1, members: 7 */ /* last cacheline: 22 bytes */ }; struct itimerspec { struct timespec it_interval; /* 0 16 */ struct timespec it_value; /* 16 16 */ /* size: 32, cachelines: 1, members: 2 */ /* last cacheline: 32 bytes */ }; struct portDS { struct PortIdentity portIdentity; /* 0 10 */ Enumeration8 portState; /* 10 1 */ Integer8 logMinDelayReqInterval; /* 11 1 */ TimeInterval peerMeanPathDelay; /* 12 8 */ Integer8 logAnnounceInterval; /* 20 1 */ UInteger8 announceReceiptTimeout; /* 21 1 */ Integer8 logSyncInterval; /* 22 1 */ Enumeration8 delayMechanism; /* 23 1 */ Integer8 logMinPdelayReqInterval; /* 24 1 */ UInteger8 versionNumber; /* 25 1 */ /* size: 26, cachelines: 1, members: 10 */ /* last cacheline: 26 bytes */ } __attribute__((__packed__)); struct management_error_status { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ Enumeration16 error; /* 4 2 */ Enumeration16 id; /* 6 2 */ Octet reserved[4]; /* 8 4 */ Octet data[]; /* 12 0 */ /* size: 12, cachelines: 1, members: 6 */ /* last cacheline: 12 bytes */ }; struct nsm_resp_tlv_head { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ uint8_t port_state; /* 4 1 */ uint8_t reserved; /* 5 1 */ struct PortAddress parent_addr; /* 6 4 */ /* size: 10, cachelines: 1, members: 5 */ /* last cacheline: 10 bytes */ }; struct path_trace_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ struct ClockIdentity cid[]; /* 4 0 */ /* size: 4, cachelines: 1, members: 3 */ /* last cacheline: 4 bytes */ }; struct ieee_c37_238_2011_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ Octet id[3]; /* 4 3 */ Octet subtype[3]; /* 7 3 */ UInteger16 grandmasterID; /* 10 2 */ UInteger32 grandmasterTimeInaccuracy; /* 12 4 */ UInteger32 networkTimeInaccuracy; /* 16 4 */ Octet pad[2]; /* 20 2 */ /* size: 22, cachelines: 1, members: 8 */ /* last cacheline: 22 bytes */ } __attribute__((__packed__)); struct ieee_c37_238_2017_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ Octet id[3]; /* 4 3 */ Octet subtype[3]; /* 7 3 */ UInteger16 grandmasterID; /* 10 2 */ UInteger32 reserved1; /* 12 4 */ UInteger32 totalTimeInaccuracy; /* 16 4 */ Octet pad[2]; /* 20 2 */ /* size: 22, cachelines: 1, members: 8 */ /* last cacheline: 22 bytes */ } __attribute__((__packed__)); struct port_ds_np { UInteger32 neighborPropDelayThresh; /* 0 4 */ Integer32 asCapable; /* 4 4 */ /* size: 8, cachelines: 1, members: 2 */ /* last cacheline: 8 bytes */ }; struct port_properties_np { struct PortIdentity portIdentity; /* 0 10 */ uint8_t port_state; /* 10 1 */ uint8_t timestamping; /* 11 1 */ struct PTPText interface; /* 12 1 */ /* size: 13, cachelines: 1, members: 4 */ /* last cacheline: 13 bytes */ } __attribute__((__packed__)); struct port_hwclock_np { struct PortIdentity portIdentity; /* 0 10 */ Integer32 phc_index; /* 10 4 */ UInteger8 flags; /* 14 1 */ uint8_t reserved; /* 15 1 */ /* size: 16, cachelines: 1, members: 4 */ /* last cacheline: 16 bytes */ } __attribute__((__packed__)); struct port_stats_np { struct PortIdentity portIdentity; /* 0 10 */ struct PortStats stats; /* 10 256 */ /* size: 266, cachelines: 5, members: 2 */ /* last cacheline: 10 bytes */ } __attribute__((__packed__)); struct port_service_stats_np { struct PortIdentity portIdentity; /* 0 10 */ struct PortServiceStats stats; /* 10 80 */ /* size: 90, cachelines: 2, members: 2 */ /* last cacheline: 26 bytes */ } __attribute__((__packed__)); struct unicast_master_table_np { uint16_t actual_table_size; /* 0 2 */ struct unicast_master_entry unicast_masters[]; /* 2 0 */ /* size: 2, cachelines: 1, members: 2 */ /* last cacheline: 2 bytes */ }; struct organization_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ Octet id[3]; /* 4 3 */ Octet subtype[3]; /* 7 3 */ /* size: 10, cachelines: 1, members: 4 */ /* last cacheline: 10 bytes */ }; struct msg_interval_req_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ Octet id[3]; /* 4 3 */ Octet subtype[3]; /* 7 3 */ Integer8 linkDelayInterval; /* 10 1 */ Integer8 timeSyncInterval; /* 11 1 */ Integer8 announceInterval; /* 12 1 */ Octet flags; /* 13 1 */ Octet reserved[2]; /* 14 2 */ /* size: 16, cachelines: 1, members: 9 */ /* last cacheline: 16 bytes */ }; struct msg_interface_rate_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ Octet id[3]; /* 4 3 */ Octet subtype[3]; /* 7 3 */ UInteger64 interfaceBitPeriod; /* 10 8 */ UInteger16 numberOfBitsBeforeTimestamp; /* 18 2 */ UInteger16 numberOfBitsAfterTimestamp; /* 20 2 */ /* size: 22, cachelines: 1, members: 7 */ /* last cacheline: 22 bytes */ } __attribute__((__packed__)); struct pqueue { int len; /* 0 4 */ int max; /* 4 4 */ int (*cmp)(void *, void *); /* 8 8 */ void * * data; /* 16 8 */ /* size: 24, cachelines: 1, members: 4 */ /* last cacheline: 24 bytes */ }; struct __va_list { void * __stack; /* 0 8 */ void * __gr_top; /* 8 8 */ void * __vr_top; /* 16 8 */ int __gr_offs; /* 24 4 */ int __vr_offs; /* 28 4 */ /* size: 32, cachelines: 1, members: 5 */ /* last cacheline: 32 bytes */ }; struct iovec { void * iov_base; /* 0 8 */ size_t iov_len; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct msghdr { void * msg_name; /* 0 8 */ socklen_t msg_namelen; /* 8 4 */ /* XXX 4 bytes hole, try to pack */ struct iovec * msg_iov; /* 16 8 */ size_t msg_iovlen; /* 24 8 */ void * msg_control; /* 32 8 */ size_t msg_controllen; /* 40 8 */ int msg_flags; /* 48 4 */ /* size: 56, cachelines: 1, members: 7 */ /* sum members: 48, holes: 1, sum holes: 4 */ /* padding: 4 */ /* last cacheline: 56 bytes */ }; struct sockaddr_nl { __kernel_sa_family_t nl_family; /* 0 2 */ short unsigned int nl_pad; /* 2 2 */ __u32 nl_pid; /* 4 4 */ __u32 nl_groups; /* 8 4 */ /* size: 12, cachelines: 1, members: 4 */ /* last cacheline: 12 bytes */ }; struct nlmsghdr { __u32 nlmsg_len; /* 0 4 */ __u16 nlmsg_type; /* 4 2 */ __u16 nlmsg_flags; /* 6 2 */ __u32 nlmsg_seq; /* 8 4 */ __u32 nlmsg_pid; /* 12 4 */ /* size: 16, cachelines: 1, members: 5 */ /* last cacheline: 16 bytes */ }; struct nlattr { __u16 nla_len; /* 0 2 */ __u16 nla_type; /* 2 2 */ /* size: 4, cachelines: 1, members: 2 */ /* last cacheline: 4 bytes */ }; struct rtattr { short unsigned int rta_len; /* 0 2 */ short unsigned int rta_type; /* 2 2 */ /* size: 4, cachelines: 1, members: 2 */ /* last cacheline: 4 bytes */ }; struct ifinfomsg { unsigned char ifi_family; /* 0 1 */ unsigned char __ifi_pad; /* 1 1 */ short unsigned int ifi_type; /* 2 2 */ int ifi_index; /* 4 4 */ unsigned int ifi_flags; /* 8 4 */ unsigned int ifi_change; /* 12 4 */ /* size: 16, cachelines: 1, members: 6 */ /* last cacheline: 16 bytes */ }; struct genlmsghdr { __u8 cmd; /* 0 1 */ __u8 version; /* 1 1 */ __u16 reserved; /* 2 2 */ /* size: 4, cachelines: 1, members: 3 */ /* last cacheline: 4 bytes */ }; struct servo { double max_frequency; /* 0 8 */ double step_threshold; /* 8 8 */ double first_step_threshold; /* 16 8 */ int first_update; /* 24 4 */ /* XXX 4 bytes hole, try to pack */ int64_t offset_threshold; /* 32 8 */ int num_offset_values; /* 40 4 */ int curr_offset_values; /* 44 4 */ void (*destroy)(struct servo *); /* 48 8 */ double (*sample)(struct servo *, int64_t, uint64_t, double, enum servo_state *); /* 56 8 */ /* --- cacheline 1 boundary (64 bytes) --- */ void (*sync_interval)(struct servo *, double); /* 64 8 */ void (*reset)(struct servo *); /* 72 8 */ double (*rate_ratio)(struct servo *); /* 80 8 */ void (*leap)(struct servo *, int); /* 88 8 */ /* size: 96, cachelines: 2, members: 13 */ /* sum members: 92, holes: 1, sum holes: 4 */ /* last cacheline: 32 bytes */ }; struct point { uint64_t x; /* 0 8 */ uint64_t y; /* 8 8 */ double w; /* 16 8 */ /* size: 24, cachelines: 1, members: 3 */ /* last cacheline: 24 bytes */ }; struct result { double slope; /* 0 8 */ double intercept; /* 8 8 */ double err; /* 16 8 */ int err_updates; /* 24 4 */ /* size: 32, cachelines: 1, members: 4 */ /* padding: 4 */ /* last cacheline: 32 bytes */ }; struct linreg_servo { struct servo servo; /* 0 96 */ /* --- cacheline 1 boundary (64 bytes) was 32 bytes ago --- */ struct point points[64]; /* 96 1536 */ /* --- cacheline 25 boundary (1600 bytes) was 32 bytes ago --- */ struct point reference; /* 1632 24 */ unsigned int num_points; /* 1656 4 */ unsigned int last_point; /* 1660 4 */ /* --- cacheline 26 boundary (1664 bytes) --- */ double x_remainder; /* 1664 8 */ uint64_t last_update; /* 1672 8 */ struct result results[5]; /* 1680 160 */ /* --- cacheline 28 boundary (1792 bytes) was 48 bytes ago --- */ unsigned int size; /* 1840 4 */ /* XXX 4 bytes hole, try to pack */ double clock_freq; /* 1848 8 */ /* --- cacheline 29 boundary (1856 bytes) --- */ double update_interval; /* 1856 8 */ double frequency_ratio; /* 1864 8 */ int leap; /* 1872 4 */ /* size: 1880, cachelines: 30, members: 13 */ /* sum members: 1872, holes: 1, sum holes: 4 */ /* padding: 4 */ /* last cacheline: 24 bytes */ }; struct shmTime { int mode; /* 0 4 */ volatile int count; /* 4 4 */ time_t clockTimeStampSec; /* 8 8 */ int clockTimeStampUSec; /* 16 4 */ /* XXX 4 bytes hole, try to pack */ time_t receiveTimeStampSec; /* 24 8 */ int receiveTimeStampUSec; /* 32 4 */ int leap; /* 36 4 */ int precision; /* 40 4 */ int nsamples; /* 44 4 */ volatile int valid; /* 48 4 */ int clockTimeStampNSec; /* 52 4 */ int receiveTimeStampNSec; /* 56 4 */ int dummy[8]; /* 60 32 */ /* size: 96, cachelines: 2, members: 13 */ /* sum members: 88, holes: 1, sum holes: 4 */ /* padding: 4 */ /* last cacheline: 32 bytes */ }; struct ntpshm_servo { struct servo servo; /* 0 96 */ /* --- cacheline 1 boundary (64 bytes) was 32 bytes ago --- */ struct shmTime * shm; /* 96 8 */ int leap; /* 104 4 */ /* size: 112, cachelines: 2, members: 3 */ /* padding: 4 */ /* last cacheline: 48 bytes */ }; struct nullf_servo { struct servo servo; /* 0 96 */ /* size: 96, cachelines: 2, members: 1 */ /* last cacheline: 32 bytes */ }; struct pi_servo { struct servo servo; /* 0 96 */ /* --- cacheline 1 boundary (64 bytes) was 32 bytes ago --- */ int64_t offset[2]; /* 96 16 */ uint64_t local[2]; /* 112 16 */ /* --- cacheline 2 boundary (128 bytes) --- */ double drift; /* 128 8 */ double kp; /* 136 8 */ double ki; /* 144 8 */ double last_freq; /* 152 8 */ int count; /* 160 4 */ /* XXX 4 bytes hole, try to pack */ double configured_pi_kp; /* 168 8 */ double configured_pi_ki; /* 176 8 */ double configured_pi_kp_scale; /* 184 8 */ /* --- cacheline 3 boundary (192 bytes) --- */ double configured_pi_kp_exponent; /* 192 8 */ double configured_pi_kp_norm_max; /* 200 8 */ double configured_pi_ki_scale; /* 208 8 */ double configured_pi_ki_exponent; /* 216 8 */ double configured_pi_ki_norm_max; /* 224 8 */ /* size: 232, cachelines: 4, members: 16 */ /* sum members: 228, holes: 1, sum holes: 4 */ /* last cacheline: 40 bytes */ }; struct sock_sample { struct timeval tv; /* 0 16 */ double offset; /* 16 8 */ int pulse; /* 24 4 */ int leap; /* 28 4 */ int _pad; /* 32 4 */ int magic; /* 36 4 */ /* size: 40, cachelines: 1, members: 6 */ /* last cacheline: 40 bytes */ }; struct sock_servo { struct servo servo; /* 0 96 */ /* --- cacheline 1 boundary (64 bytes) was 32 bytes ago --- */ int sock_fd; /* 96 4 */ int leap; /* 100 4 */ /* size: 104, cachelines: 2, members: 3 */ /* last cacheline: 40 bytes */ }; struct so_timestamping { int flags; /* 0 4 */ int bind_phc; /* 4 4 */ /* size: 8, cachelines: 1, members: 2 */ /* last cacheline: 8 bytes */ }; struct hwtstamp_config { int flags; /* 0 4 */ int tx_type; /* 4 4 */ int rx_filter; /* 8 4 */ /* size: 12, cachelines: 1, members: 3 */ /* last cacheline: 12 bytes */ }; struct ethtool_ts_info { __u32 cmd; /* 0 4 */ __u32 so_timestamping; /* 4 4 */ __s32 phc_index; /* 8 4 */ __u32 tx_types; /* 12 4 */ __u32 tx_reserved[3]; /* 16 12 */ __u32 rx_filters; /* 28 4 */ __u32 rx_reserved[3]; /* 32 12 */ /* size: 44, cachelines: 1, members: 7 */ /* last cacheline: 44 bytes */ }; struct ethtool_link_settings { __u32 cmd; /* 0 4 */ __u32 speed; /* 4 4 */ __u8 duplex; /* 8 1 */ __u8 port; /* 9 1 */ __u8 phy_address; /* 10 1 */ __u8 autoneg; /* 11 1 */ __u8 mdio_support; /* 12 1 */ __u8 eth_tp_mdix; /* 13 1 */ __u8 eth_tp_mdix_ctrl; /* 14 1 */ __s8 link_mode_masks_nwords; /* 15 1 */ __u8 transceiver; /* 16 1 */ __u8 master_slave_cfg; /* 17 1 */ __u8 master_slave_state; /* 18 1 */ __u8 rate_matching; /* 19 1 */ __u32 reserved[7]; /* 20 28 */ __u32 link_mode_masks[]; /* 48 0 */ /* size: 48, cachelines: 1, members: 16 */ /* last cacheline: 48 bytes */ }; struct cmsghdr { size_t cmsg_len; /* 0 8 */ int cmsg_level; /* 8 4 */ int cmsg_type; /* 12 4 */ unsigned char __cmsg_data[]; /* 16 0 */ /* size: 16, cachelines: 1, members: 4 */ /* last cacheline: 16 bytes */ }; struct ifmap { long unsigned int mem_start; /* 0 8 */ long unsigned int mem_end; /* 8 8 */ short unsigned int base_addr; /* 16 2 */ unsigned char irq; /* 18 1 */ unsigned char dma; /* 19 1 */ unsigned char port; /* 20 1 */ /* size: 24, cachelines: 1, members: 6 */ /* padding: 3 */ /* last cacheline: 24 bytes */ }; struct ifreq { union { char ifrn_name[16]; /* 0 16 */ } ifr_ifrn; /* 0 16 */ union { struct sockaddr ifru_addr; /* 16 16 */ struct sockaddr ifru_dstaddr; /* 16 16 */ struct sockaddr ifru_broadaddr; /* 16 16 */ struct sockaddr ifru_netmask; /* 16 16 */ struct sockaddr ifru_hwaddr; /* 16 16 */ short int ifru_flags; /* 16 2 */ int ifru_ivalue; /* 16 4 */ int ifru_mtu; /* 16 4 */ struct ifmap ifru_map; /* 16 24 */ char ifru_slave[16]; /* 16 16 */ char ifru_newname[16]; /* 16 16 */ __caddr_t ifru_data; /* 16 8 */ } ifr_ifru; /* 16 24 */ /* size: 40, cachelines: 1, members: 2 */ /* last cacheline: 40 bytes */ }; struct ifaddrs { struct ifaddrs * ifa_next; /* 0 8 */ char * ifa_name; /* 8 8 */ unsigned int ifa_flags; /* 16 4 */ /* XXX 4 bytes hole, try to pack */ struct sockaddr * ifa_addr; /* 24 8 */ struct sockaddr * ifa_netmask; /* 32 8 */ union { struct sockaddr * ifu_broadaddr; /* 40 8 */ struct sockaddr * ifu_dstaddr; /* 40 8 */ } ifa_ifu; /* 40 8 */ void * ifa_data; /* 48 8 */ /* size: 56, cachelines: 1, members: 7 */ /* sum members: 52, holes: 1, sum holes: 4 */ /* last cacheline: 56 bytes */ }; struct stats { unsigned int num; /* 0 4 */ /* XXX 4 bytes hole, try to pack */ double min; /* 8 8 */ double max; /* 16 8 */ double mean; /* 24 8 */ double sum_sqr; /* 32 8 */ double sum_diff_sqr; /* 40 8 */ /* size: 48, cachelines: 1, members: 6 */ /* sum members: 44, holes: 1, sum holes: 4 */ /* last cacheline: 48 bytes */ }; struct tc_pool { struct tc_txd * tqh_first; /* 0 8 */ struct tc_txd * * tqh_last; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct sock_filter { __u16 code; /* 0 2 */ __u8 jt; /* 2 1 */ __u8 jf; /* 3 1 */ __u32 k; /* 4 4 */ /* size: 8, cachelines: 1, members: 4 */ /* last cacheline: 8 bytes */ }; struct sock_fprog { short unsigned int len; /* 0 2 */ /* XXX 6 bytes hole, try to pack */ struct sock_filter * filter; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* sum members: 10, holes: 1, sum holes: 6 */ /* last cacheline: 16 bytes */ }; struct packet_mreq { int mr_ifindex; /* 0 4 */ short unsigned int mr_type; /* 4 2 */ short unsigned int mr_alen; /* 6 2 */ unsigned char mr_address[8]; /* 8 8 */ /* size: 16, cachelines: 1, members: 4 */ /* last cacheline: 16 bytes */ }; struct eth_hdr { eth_addr dst; /* 0 6 */ eth_addr src; /* 6 6 */ uint16_t type; /* 12 2 */ /* size: 14, cachelines: 1, members: 3 */ /* last cacheline: 14 bytes */ }; struct transport { enum transport_type type; /* 0 4 */ /* XXX 4 bytes hole, try to pack */ struct config * cfg; /* 8 8 */ int (*close)(struct transport *, struct fdarray *); /* 16 8 */ int (*open)(struct transport *, struct interface *, struct fdarray *, enum timestamp_type); /* 24 8 */ int (*recv)(struct transport *, int, void *, int, struct address *, struct hw_timestamp *); /* 32 8 */ int (*send)(struct transport *, struct fdarray *, enum transport_event, int, void *, int, struct address *, struct hw_timestamp *); /* 40 8 */ void (*release)(struct transport *); /* 48 8 */ int (*physical_addr)(struct transport *, uint8_t *); /* 56 8 */ /* --- cacheline 1 boundary (64 bytes) --- */ int (*protocol_addr)(struct transport *, uint8_t *); /* 64 8 */ /* size: 72, cachelines: 2, members: 9 */ /* sum members: 68, holes: 1, sum holes: 4 */ /* last cacheline: 8 bytes */ }; struct raw { struct transport t; /* 0 72 */ /* --- cacheline 1 boundary (64 bytes) was 8 bytes ago --- */ struct address src_addr; /* 72 136 */ /* --- cacheline 3 boundary (192 bytes) was 16 bytes ago --- */ struct address ptp_addr; /* 208 136 */ /* --- cacheline 5 boundary (320 bytes) was 24 bytes ago --- */ struct address p2p_addr; /* 344 136 */ /* --- cacheline 7 boundary (448 bytes) was 32 bytes ago --- */ int vlan; /* 480 4 */ /* size: 488, cachelines: 8, members: 5 */ /* padding: 4 */ /* last cacheline: 40 bytes */ }; struct ip_mreqn { struct in_addr imr_multiaddr; /* 0 4 */ struct in_addr imr_address; /* 4 4 */ int imr_ifindex; /* 8 4 */ /* size: 12, cachelines: 1, members: 3 */ /* last cacheline: 12 bytes */ }; struct udp { struct transport t; /* 0 72 */ /* --- cacheline 1 boundary (64 bytes) was 8 bytes ago --- */ struct address ip; /* 72 136 */ /* --- cacheline 3 boundary (192 bytes) was 16 bytes ago --- */ struct address mac; /* 208 136 */ /* size: 344, cachelines: 6, members: 3 */ /* last cacheline: 24 bytes */ }; struct ipv6_mreq { struct in6_addr ipv6mr_multiaddr; /* 0 16 */ unsigned int ipv6mr_interface; /* 16 4 */ /* size: 20, cachelines: 1, members: 2 */ /* last cacheline: 20 bytes */ }; struct udp6 { struct transport t; /* 0 72 */ /* --- cacheline 1 boundary (64 bytes) was 8 bytes ago --- */ int index; /* 72 4 */ /* XXX 4 bytes hole, try to pack */ struct address ip; /* 80 136 */ /* --- cacheline 3 boundary (192 bytes) was 24 bytes ago --- */ struct address mac; /* 216 136 */ /* --- cacheline 5 boundary (320 bytes) was 32 bytes ago --- */ struct in6_addr mc6_addr[2]; /* 352 32 */ /* size: 384, cachelines: 6, members: 5 */ /* sum members: 380, holes: 1, sum holes: 4 */ }; struct uds { struct transport t; /* 0 72 */ /* --- cacheline 1 boundary (64 bytes) was 8 bytes ago --- */ struct address address; /* 72 136 */ /* size: 208, cachelines: 4, members: 2 */ /* last cacheline: 16 bytes */ }; struct ack_cancel_unicast_xmit_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ uint8_t message_type_flags; /* 4 1 */ uint8_t reserved; /* 5 1 */ /* size: 6, cachelines: 1, members: 4 */ /* last cacheline: 6 bytes */ }; struct cancel_unicast_xmit_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ uint8_t message_type_flags; /* 4 1 */ uint8_t reserved; /* 5 1 */ /* size: 6, cachelines: 1, members: 4 */ /* last cacheline: 6 bytes */ }; struct grant_unicast_xmit_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ uint8_t message_type; /* 4 1 */ Integer8 logInterMessagePeriod; /* 5 1 */ UInteger32 durationField; /* 6 4 */ uint8_t reserved; /* 10 1 */ uint8_t flags; /* 11 1 */ /* size: 12, cachelines: 1, members: 7 */ /* last cacheline: 12 bytes */ } __attribute__((__packed__)); struct request_unicast_xmit_tlv { Enumeration16 type; /* 0 2 */ UInteger16 length; /* 2 2 */ uint8_t message_type; /* 4 1 */ Integer8 logInterMessagePeriod; /* 5 1 */ UInteger32 durationField; /* 6 4 */ /* size: 10, cachelines: 1, members: 5 */ /* last cacheline: 10 bytes */ } __attribute__((__packed__)); struct tlv_pool { struct tlv_extra * tqh_first; /* 0 8 */ struct tlv_extra * * tqh_last; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct tsproc { enum tsproc_mode mode; /* 0 4 */ /* XXX 4 bytes hole, try to pack */ double clock_rate_ratio; /* 8 8 */ tmv_t t1; /* 16 8 */ tmv_t t2; /* 24 8 */ tmv_t t3; /* 32 8 */ tmv_t t4; /* 40 8 */ tmv_t filtered_delay; /* 48 8 */ int filtered_delay_valid; /* 56 4 */ /* XXX 4 bytes hole, try to pack */ /* --- cacheline 1 boundary (64 bytes) --- */ struct filter * delay_filter; /* 64 8 */ /* size: 72, cachelines: 2, members: 9 */ /* sum members: 64, holes: 2, sum holes: 8 */ /* last cacheline: 8 bytes */ }; struct unicast_service { struct usi intervals; /* 0 8 */ struct pqueue * queue; /* 8 8 */ /* size: 16, cachelines: 1, members: 2 */ /* last cacheline: 16 bytes */ }; struct unicast_client_address { struct { struct unicast_client_address * le_next; /* 0 8 */ struct unicast_client_address * * le_prev; /* 8 8 */ } list; /* 0 16 */ struct PortIdentity portIdentity; /* 16 10 */ struct { UInteger16 announce; /* 26 2 */ UInteger16 sync; /* 28 2 */ } seqnum; /* 26 4 */ /* XXX 2 bytes hole, try to pack */ unsigned int message_types; /* 32 4 */ /* XXX 4 bytes hole, try to pack */ struct address addr; /* 40 136 */ /* --- cacheline 2 boundary (128 bytes) was 48 bytes ago --- */ time_t grant_tmo; /* 176 8 */ /* size: 184, cachelines: 3, members: 6 */ /* sum members: 178, holes: 2, sum holes: 6 */ /* last cacheline: 56 bytes */ }; struct uca { struct unicast_client_address * lh_first; /* 0 8 */ /* size: 8, cachelines: 1, members: 1 */ /* last cacheline: 8 bytes */ }; struct unicast_service_interval { struct uca clients; /* 0 8 */ struct { struct unicast_service_interval * le_next; /* 8 8 */ struct unicast_service_interval * * le_prev; /* 16 8 */ } list; /* 8 16 */ struct timespec incr; /* 24 16 */ struct timespec tmo; /* 40 16 */ int log_period; /* 56 4 */ /* size: 64, cachelines: 1, members: 5 */ /* padding: 4 */ }; struct usi { struct unicast_service_interval * lh_first; /* 0 8 */ /* size: 8, cachelines: 1, members: 1 */ /* last cacheline: 8 bytes */ };