include/uapi/linux/ptp_clock.h
Source file repositories/reference/linux-study-clean/include/uapi/linux/ptp_clock.h
File Facts
- System
- Linux kernel
- Corpus path
include/uapi/linux/ptp_clock.h- Extension
.h- Size
- 8623 bytes
- Lines
- 264
- 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/ioctl.hlinux/types.h
Detected Declarations
struct ptp_clock_timestruct ptp_clock_capsstruct ptp_extts_requeststruct ptp_perout_requeststruct ptp_sys_offsetstruct ptp_sys_offset_extendedstruct ptp_sys_offset_precisestruct ptp_pin_descstruct ptp_extts_eventenum ptp_pin_function
Annotated Snippet
struct ptp_clock_time {
__s64 sec; /* seconds */
__u32 nsec; /* nanoseconds */
__u32 reserved;
};
struct ptp_clock_caps {
int max_adj; /* Maximum frequency adjustment in parts per billon. */
int n_alarm; /* Number of programmable alarms. */
int n_ext_ts; /* Number of external time stamp channels. */
int n_per_out; /* Number of programmable periodic signals. */
int pps; /* Whether the clock supports a PPS callback. */
int n_pins; /* Number of input/output pins. */
/* Whether the clock supports precise system-device cross timestamps */
int cross_timestamping;
/* Whether the clock supports adjust phase */
int adjust_phase;
int max_phase_adj; /* Maximum phase adjustment in nanoseconds. */
int rsv[11]; /* Reserved for future use. */
};
struct ptp_extts_request {
unsigned int index; /* Which channel to configure. */
unsigned int flags; /* Bit field for PTP_xxx flags. */
unsigned int rsv[2]; /* Reserved for future use. */
};
struct ptp_perout_request {
union {
/*
* Absolute start time.
* Valid only if (flags & PTP_PEROUT_PHASE) is unset.
*/
struct ptp_clock_time start;
/*
* Phase offset. The signal should start toggling at an
* unspecified integer multiple of the period, plus this value.
* The start time should be "as soon as possible".
* Valid only if (flags & PTP_PEROUT_PHASE) is set.
*/
struct ptp_clock_time phase;
};
struct ptp_clock_time period; /* Desired period, zero means disable. */
unsigned int index; /* Which channel to configure. */
unsigned int flags;
union {
/*
* The "on" time of the signal.
* Must be lower than the period.
* Valid only if (flags & PTP_PEROUT_DUTY_CYCLE) is set.
*/
struct ptp_clock_time on;
/* Reserved for future use. */
unsigned int rsv[4];
};
};
#define PTP_MAX_SAMPLES 25 /* Maximum allowed offset measurement samples. */
struct ptp_sys_offset {
unsigned int n_samples; /* Desired number of measurements. */
unsigned int rsv[3]; /* Reserved for future use. */
/*
* Array of interleaved system/phc time stamps. The kernel
* will provide 2*n_samples + 1 time stamps, with the last
* one as a system time stamp.
*/
struct ptp_clock_time ts[2 * PTP_MAX_SAMPLES + 1];
};
/*
* ptp_sys_offset_extended - data structure for IOCTL operation
* PTP_SYS_OFFSET_EXTENDED
*
* @n_samples: Desired number of measurements.
* @clockid: clockid of a clock-base used for pre/post timestamps.
* @rsv: Reserved for future use.
* @ts: Array of samples in the form [pre-TS, PHC, post-TS]. The
* kernel provides @n_samples.
*
* Starting from kernel 6.12 and onwards, the first word of the reserved-field
* is used for @clockid. That's backward compatible since previous kernel
* expect all three reserved words (@rsv[3]) to be 0 while the clockid (first
* word in the new structure) for CLOCK_REALTIME is '0'.
*/
struct ptp_sys_offset_extended {
unsigned int n_samples;
__kernel_clockid_t clockid;
unsigned int rsv[2];
struct ptp_clock_time ts[PTP_MAX_SAMPLES][3];
Annotation
- Immediate include surface: `linux/ioctl.h`, `linux/types.h`.
- Detected declarations: `struct ptp_clock_time`, `struct ptp_clock_caps`, `struct ptp_extts_request`, `struct ptp_perout_request`, `struct ptp_sys_offset`, `struct ptp_sys_offset_extended`, `struct ptp_sys_offset_precise`, `struct ptp_pin_desc`, `struct ptp_extts_event`, `enum ptp_pin_function`.
- 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.