include/uapi/linux/if_arcnet.h
Source file repositories/reference/linux-study-clean/include/uapi/linux/if_arcnet.h
File Facts
- System
- Linux kernel
- Corpus path
include/uapi/linux/if_arcnet.h- Extension
.h- Size
- 3729 bytes
- Lines
- 131
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/types.hlinux/if_ether.h
Detected Declarations
struct arc_rfc1201struct arc_rfc1051struct arc_eth_encapstruct arc_capstruct arc_hardwarestruct archdr
Annotated Snippet
struct arc_rfc1201 {
__u8 proto; /* protocol ID field - varies */
__u8 split_flag; /* for use with split packets */
__be16 sequence; /* sequence number */
__u8 payload[]; /* space remaining in packet (504 bytes)*/
};
#define RFC1201_HDR_SIZE 4
/*
* The RFC1051-specific components.
*/
struct arc_rfc1051 {
__u8 proto; /* ARC_P_RFC1051_ARP/RFC1051_IP */
__u8 payload[]; /* 507 bytes */
};
#define RFC1051_HDR_SIZE 1
/*
* The ethernet-encap-specific components. We have a real ethernet header
* and some data.
*/
struct arc_eth_encap {
__u8 proto; /* Always ARC_P_ETHER */
struct ethhdr eth; /* standard ethernet header (yuck!) */
__u8 payload[]; /* 493 bytes */
};
#define ETH_ENCAP_HDR_SIZE 14
struct arc_cap {
__u8 proto;
__u8 cookie[sizeof(int)];
/* Actually NOT sent over the network */
union {
__u8 ack;
__u8 raw[0]; /* 507 bytes */
} mes;
};
/*
* The data needed by the actual arcnet hardware.
*
* Now, in the real arcnet hardware, the third and fourth bytes are the
* 'offset' specification instead of the length, and the soft data is at
* the _end_ of the 512-byte buffer. We hide this complexity inside the
* driver.
*/
struct arc_hardware {
__u8 source; /* source ARCnet - filled in automagically */
__u8 dest; /* destination ARCnet - 0 for broadcast */
__u8 offset[2]; /* offset bytes (some weird semantics) */
};
#define ARC_HDR_SIZE 4
/*
* This is an ARCnet frame header, as seen by the kernel (and userspace,
* when you do a raw packet capture).
*/
struct archdr {
/* hardware requirements */
struct arc_hardware hard;
/* arcnet encapsulation-specific bits */
union {
struct arc_rfc1201 rfc1201;
struct arc_rfc1051 rfc1051;
struct arc_eth_encap eth_encap;
struct arc_cap cap;
__u8 raw[0]; /* 508 bytes */
} soft;
};
#endif /* _UAPI_LINUX_IF_ARCNET_H */
Annotation
- Immediate include surface: `linux/types.h`, `linux/if_ether.h`.
- Detected declarations: `struct arc_rfc1201`, `struct arc_rfc1051`, `struct arc_eth_encap`, `struct arc_cap`, `struct arc_hardware`, `struct archdr`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.