mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 05:44:20 +00:00
Add So and Sol typed flags
Replace SO with So type and Add SO named constants for compatability Replace SOL with Sol type and Add SOL named constants for compatability Replace some more typed flags with their typed equivalent Remove any unnecessary IoUring dependency on linux.* Add TODOs for all untyped flags Signed-off-by: Bernard Assan <mega.alpha100@gmail.com>
This commit is contained in:
parent
1ae677fda1
commit
9d460e7a78
2 changed files with 503 additions and 338 deletions
|
|
@ -4226,282 +4226,369 @@ pub const Af = enum(u16) {
|
|||
pub const MAX: u16 = @intFromEnum(Af.max);
|
||||
};
|
||||
|
||||
pub const SO = if (is_mips) struct {
|
||||
pub const DEBUG = 1;
|
||||
pub const REUSEADDR = 0x0004;
|
||||
pub const KEEPALIVE = 0x0008;
|
||||
pub const DONTROUTE = 0x0010;
|
||||
pub const BROADCAST = 0x0020;
|
||||
pub const LINGER = 0x0080;
|
||||
pub const OOBINLINE = 0x0100;
|
||||
pub const REUSEPORT = 0x0200;
|
||||
pub const SNDBUF = 0x1001;
|
||||
pub const RCVBUF = 0x1002;
|
||||
pub const SNDLOWAT = 0x1003;
|
||||
pub const RCVLOWAT = 0x1004;
|
||||
pub const RCVTIMEO = 0x1006;
|
||||
pub const SNDTIMEO = 0x1005;
|
||||
pub const ERROR = 0x1007;
|
||||
pub const TYPE = 0x1008;
|
||||
pub const ACCEPTCONN = 0x1009;
|
||||
pub const PROTOCOL = 0x1028;
|
||||
pub const DOMAIN = 0x1029;
|
||||
pub const NO_CHECK = 11;
|
||||
pub const PRIORITY = 12;
|
||||
pub const BSDCOMPAT = 14;
|
||||
pub const PASSCRED = 17;
|
||||
pub const PEERCRED = 18;
|
||||
pub const PEERSEC = 30;
|
||||
pub const SNDBUFFORCE = 31;
|
||||
pub const RCVBUFFORCE = 33;
|
||||
pub const SECURITY_AUTHENTICATION = 22;
|
||||
pub const SECURITY_ENCRYPTION_TRANSPORT = 23;
|
||||
pub const SECURITY_ENCRYPTION_NETWORK = 24;
|
||||
pub const BINDTODEVICE = 25;
|
||||
pub const ATTACH_FILTER = 26;
|
||||
pub const DETACH_FILTER = 27;
|
||||
pub const GET_FILTER = ATTACH_FILTER;
|
||||
pub const PEERNAME = 28;
|
||||
pub const TIMESTAMP_OLD = 29;
|
||||
pub const PASSSEC = 34;
|
||||
pub const TIMESTAMPNS_OLD = 35;
|
||||
pub const MARK = 36;
|
||||
pub const TIMESTAMPING_OLD = 37;
|
||||
pub const RXQ_OVFL = 40;
|
||||
pub const WIFI_STATUS = 41;
|
||||
pub const PEEK_OFF = 42;
|
||||
pub const NOFCS = 43;
|
||||
pub const LOCK_FILTER = 44;
|
||||
pub const SELECT_ERR_QUEUE = 45;
|
||||
pub const BUSY_POLL = 46;
|
||||
pub const MAX_PACING_RATE = 47;
|
||||
pub const BPF_EXTENSIONS = 48;
|
||||
pub const INCOMING_CPU = 49;
|
||||
pub const ATTACH_BPF = 50;
|
||||
pub const DETACH_BPF = DETACH_FILTER;
|
||||
pub const ATTACH_REUSEPORT_CBPF = 51;
|
||||
pub const ATTACH_REUSEPORT_EBPF = 52;
|
||||
pub const CNX_ADVICE = 53;
|
||||
pub const MEMINFO = 55;
|
||||
pub const INCOMING_NAPI_ID = 56;
|
||||
pub const COOKIE = 57;
|
||||
pub const PEERGROUPS = 59;
|
||||
pub const ZEROCOPY = 60;
|
||||
pub const TXTIME = 61;
|
||||
pub const BINDTOIFINDEX = 62;
|
||||
pub const TIMESTAMP_NEW = 63;
|
||||
pub const TIMESTAMPNS_NEW = 64;
|
||||
pub const TIMESTAMPING_NEW = 65;
|
||||
pub const RCVTIMEO_NEW = 66;
|
||||
pub const SNDTIMEO_NEW = 67;
|
||||
pub const DETACH_REUSEPORT_BPF = 68;
|
||||
} else if (is_ppc) struct {
|
||||
pub const DEBUG = 1;
|
||||
pub const REUSEADDR = 2;
|
||||
pub const TYPE = 3;
|
||||
pub const ERROR = 4;
|
||||
pub const DONTROUTE = 5;
|
||||
pub const BROADCAST = 6;
|
||||
pub const SNDBUF = 7;
|
||||
pub const RCVBUF = 8;
|
||||
pub const KEEPALIVE = 9;
|
||||
pub const OOBINLINE = 10;
|
||||
pub const NO_CHECK = 11;
|
||||
pub const PRIORITY = 12;
|
||||
pub const LINGER = 13;
|
||||
pub const BSDCOMPAT = 14;
|
||||
pub const REUSEPORT = 15;
|
||||
pub const RCVLOWAT = 16;
|
||||
pub const SNDLOWAT = 17;
|
||||
pub const RCVTIMEO = 18;
|
||||
pub const SNDTIMEO = 19;
|
||||
pub const PASSCRED = 20;
|
||||
pub const PEERCRED = 21;
|
||||
pub const ACCEPTCONN = 30;
|
||||
pub const PEERSEC = 31;
|
||||
pub const SNDBUFFORCE = 32;
|
||||
pub const RCVBUFFORCE = 33;
|
||||
pub const PROTOCOL = 38;
|
||||
pub const DOMAIN = 39;
|
||||
pub const SECURITY_AUTHENTICATION = 22;
|
||||
pub const SECURITY_ENCRYPTION_TRANSPORT = 23;
|
||||
pub const SECURITY_ENCRYPTION_NETWORK = 24;
|
||||
pub const BINDTODEVICE = 25;
|
||||
pub const ATTACH_FILTER = 26;
|
||||
pub const DETACH_FILTER = 27;
|
||||
pub const GET_FILTER = ATTACH_FILTER;
|
||||
pub const PEERNAME = 28;
|
||||
pub const TIMESTAMP_OLD = 29;
|
||||
pub const PASSSEC = 34;
|
||||
pub const TIMESTAMPNS_OLD = 35;
|
||||
pub const MARK = 36;
|
||||
pub const TIMESTAMPING_OLD = 37;
|
||||
pub const RXQ_OVFL = 40;
|
||||
pub const WIFI_STATUS = 41;
|
||||
pub const PEEK_OFF = 42;
|
||||
pub const NOFCS = 43;
|
||||
pub const LOCK_FILTER = 44;
|
||||
pub const SELECT_ERR_QUEUE = 45;
|
||||
pub const BUSY_POLL = 46;
|
||||
pub const MAX_PACING_RATE = 47;
|
||||
pub const BPF_EXTENSIONS = 48;
|
||||
pub const INCOMING_CPU = 49;
|
||||
pub const ATTACH_BPF = 50;
|
||||
pub const DETACH_BPF = DETACH_FILTER;
|
||||
pub const ATTACH_REUSEPORT_CBPF = 51;
|
||||
pub const ATTACH_REUSEPORT_EBPF = 52;
|
||||
pub const CNX_ADVICE = 53;
|
||||
pub const MEMINFO = 55;
|
||||
pub const INCOMING_NAPI_ID = 56;
|
||||
pub const COOKIE = 57;
|
||||
pub const PEERGROUPS = 59;
|
||||
pub const ZEROCOPY = 60;
|
||||
pub const TXTIME = 61;
|
||||
pub const BINDTOIFINDEX = 62;
|
||||
pub const TIMESTAMP_NEW = 63;
|
||||
pub const TIMESTAMPNS_NEW = 64;
|
||||
pub const TIMESTAMPING_NEW = 65;
|
||||
pub const RCVTIMEO_NEW = 66;
|
||||
pub const SNDTIMEO_NEW = 67;
|
||||
pub const DETACH_REUSEPORT_BPF = 68;
|
||||
} else if (is_sparc) struct {
|
||||
pub const DEBUG = 1;
|
||||
pub const REUSEADDR = 4;
|
||||
pub const TYPE = 4104;
|
||||
pub const ERROR = 4103;
|
||||
pub const DONTROUTE = 16;
|
||||
pub const BROADCAST = 32;
|
||||
pub const SNDBUF = 4097;
|
||||
pub const RCVBUF = 4098;
|
||||
pub const KEEPALIVE = 8;
|
||||
pub const OOBINLINE = 256;
|
||||
pub const NO_CHECK = 11;
|
||||
pub const PRIORITY = 12;
|
||||
pub const LINGER = 128;
|
||||
pub const BSDCOMPAT = 1024;
|
||||
pub const REUSEPORT = 512;
|
||||
pub const PASSCRED = 2;
|
||||
pub const PEERCRED = 64;
|
||||
pub const RCVLOWAT = 2048;
|
||||
pub const SNDLOWAT = 4096;
|
||||
pub const RCVTIMEO = 8192;
|
||||
pub const SNDTIMEO = 16384;
|
||||
pub const ACCEPTCONN = 32768;
|
||||
pub const PEERSEC = 30;
|
||||
pub const SNDBUFFORCE = 4106;
|
||||
pub const RCVBUFFORCE = 4107;
|
||||
pub const PROTOCOL = 4136;
|
||||
pub const DOMAIN = 4137;
|
||||
pub const SECURITY_AUTHENTICATION = 20481;
|
||||
pub const SECURITY_ENCRYPTION_TRANSPORT = 20482;
|
||||
pub const SECURITY_ENCRYPTION_NETWORK = 20484;
|
||||
pub const BINDTODEVICE = 13;
|
||||
pub const ATTACH_FILTER = 26;
|
||||
pub const DETACH_FILTER = 27;
|
||||
pub const GET_FILTER = 26;
|
||||
pub const PEERNAME = 28;
|
||||
pub const TIMESTAMP_OLD = 29;
|
||||
pub const PASSSEC = 31;
|
||||
pub const TIMESTAMPNS_OLD = 33;
|
||||
pub const MARK = 34;
|
||||
pub const TIMESTAMPING_OLD = 35;
|
||||
pub const RXQ_OVFL = 36;
|
||||
pub const WIFI_STATUS = 37;
|
||||
pub const PEEK_OFF = 38;
|
||||
pub const NOFCS = 39;
|
||||
pub const LOCK_FILTER = 40;
|
||||
pub const SELECT_ERR_QUEUE = 41;
|
||||
pub const BUSY_POLL = 48;
|
||||
pub const MAX_PACING_RATE = 49;
|
||||
pub const BPF_EXTENSIONS = 50;
|
||||
pub const INCOMING_CPU = 51;
|
||||
pub const ATTACH_BPF = 52;
|
||||
pub const DETACH_BPF = 27;
|
||||
pub const ATTACH_REUSEPORT_CBPF = 53;
|
||||
pub const ATTACH_REUSEPORT_EBPF = 54;
|
||||
pub const CNX_ADVICE = 55;
|
||||
pub const MEMINFO = 57;
|
||||
pub const INCOMING_NAPI_ID = 58;
|
||||
pub const COOKIE = 59;
|
||||
pub const PEERGROUPS = 61;
|
||||
pub const ZEROCOPY = 62;
|
||||
pub const TXTIME = 63;
|
||||
pub const BINDTOIFINDEX = 65;
|
||||
pub const TIMESTAMP_NEW = 70;
|
||||
pub const TIMESTAMPNS_NEW = 66;
|
||||
pub const TIMESTAMPING_NEW = 67;
|
||||
pub const RCVTIMEO_NEW = 68;
|
||||
pub const SNDTIMEO_NEW = 69;
|
||||
pub const DETACH_REUSEPORT_BPF = 71;
|
||||
} else struct {
|
||||
pub const DEBUG = 1;
|
||||
pub const REUSEADDR = 2;
|
||||
pub const TYPE = 3;
|
||||
pub const ERROR = 4;
|
||||
pub const DONTROUTE = 5;
|
||||
pub const BROADCAST = 6;
|
||||
pub const SNDBUF = 7;
|
||||
pub const RCVBUF = 8;
|
||||
pub const KEEPALIVE = 9;
|
||||
pub const OOBINLINE = 10;
|
||||
pub const NO_CHECK = 11;
|
||||
pub const PRIORITY = 12;
|
||||
pub const LINGER = 13;
|
||||
pub const BSDCOMPAT = 14;
|
||||
pub const REUSEPORT = 15;
|
||||
pub const PASSCRED = 16;
|
||||
pub const PEERCRED = 17;
|
||||
pub const RCVLOWAT = 18;
|
||||
pub const SNDLOWAT = 19;
|
||||
pub const RCVTIMEO = 20;
|
||||
pub const SNDTIMEO = 21;
|
||||
pub const ACCEPTCONN = 30;
|
||||
pub const PEERSEC = 31;
|
||||
pub const SNDBUFFORCE = 32;
|
||||
pub const RCVBUFFORCE = 33;
|
||||
pub const PROTOCOL = 38;
|
||||
pub const DOMAIN = 39;
|
||||
pub const SECURITY_AUTHENTICATION = 22;
|
||||
pub const SECURITY_ENCRYPTION_TRANSPORT = 23;
|
||||
pub const SECURITY_ENCRYPTION_NETWORK = 24;
|
||||
pub const BINDTODEVICE = 25;
|
||||
pub const ATTACH_FILTER = 26;
|
||||
pub const DETACH_FILTER = 27;
|
||||
pub const GET_FILTER = ATTACH_FILTER;
|
||||
pub const PEERNAME = 28;
|
||||
pub const TIMESTAMP_OLD = 29;
|
||||
pub const PASSSEC = 34;
|
||||
pub const TIMESTAMPNS_OLD = 35;
|
||||
pub const MARK = 36;
|
||||
pub const TIMESTAMPING_OLD = 37;
|
||||
pub const RXQ_OVFL = 40;
|
||||
pub const WIFI_STATUS = 41;
|
||||
pub const PEEK_OFF = 42;
|
||||
pub const NOFCS = 43;
|
||||
pub const LOCK_FILTER = 44;
|
||||
pub const SELECT_ERR_QUEUE = 45;
|
||||
pub const BUSY_POLL = 46;
|
||||
pub const MAX_PACING_RATE = 47;
|
||||
pub const BPF_EXTENSIONS = 48;
|
||||
pub const INCOMING_CPU = 49;
|
||||
pub const ATTACH_BPF = 50;
|
||||
pub const DETACH_BPF = DETACH_FILTER;
|
||||
pub const ATTACH_REUSEPORT_CBPF = 51;
|
||||
pub const ATTACH_REUSEPORT_EBPF = 52;
|
||||
pub const CNX_ADVICE = 53;
|
||||
pub const MEMINFO = 55;
|
||||
pub const INCOMING_NAPI_ID = 56;
|
||||
pub const COOKIE = 57;
|
||||
pub const PEERGROUPS = 59;
|
||||
pub const ZEROCOPY = 60;
|
||||
pub const TXTIME = 61;
|
||||
pub const BINDTOIFINDEX = 62;
|
||||
pub const TIMESTAMP_NEW = 63;
|
||||
pub const TIMESTAMPNS_NEW = 64;
|
||||
pub const TIMESTAMPING_NEW = 65;
|
||||
pub const RCVTIMEO_NEW = 66;
|
||||
pub const SNDTIMEO_NEW = 67;
|
||||
pub const DETACH_REUSEPORT_BPF = 68;
|
||||
// COMMIT: add new Typed So enum
|
||||
/// SO_* type
|
||||
pub const So = if (is_mips) enum(u16) {
|
||||
debug = 1,
|
||||
reuseaddr = 0x0004,
|
||||
keepalive = 0x0008,
|
||||
dontroute = 0x0010,
|
||||
broadcast = 0x0020,
|
||||
linger = 0x0080,
|
||||
oobinline = 0x0100,
|
||||
reuseport = 0x0200,
|
||||
sndbuf = 0x1001,
|
||||
rcvbuf = 0x1002,
|
||||
sndlowat = 0x1003,
|
||||
rcvlowat = 0x1004,
|
||||
sndtimeo = 0x1005,
|
||||
rcvtimeo = 0x1006,
|
||||
@"error" = 0x1007,
|
||||
type = 0x1008,
|
||||
acceptconn = 0x1009,
|
||||
protocol = 0x1028,
|
||||
domain = 0x1029,
|
||||
no_check = 11,
|
||||
priority = 12,
|
||||
bsdcompat = 14,
|
||||
passcred = 17,
|
||||
peercred = 18,
|
||||
peersec = 30,
|
||||
sndbufforce = 31,
|
||||
rcvbufforce = 33,
|
||||
security_authentication = 22,
|
||||
security_encryption_transport = 23,
|
||||
security_encryption_network = 24,
|
||||
bindtodevice = 25,
|
||||
attach_filter = 26,
|
||||
detach_filter = 27,
|
||||
peername = 28,
|
||||
timestamp_old = 29,
|
||||
passsec = 34,
|
||||
timestampns_old = 35,
|
||||
mark = 36,
|
||||
timestamping_old = 37,
|
||||
rxq_ovfl = 40,
|
||||
wifi_status = 41,
|
||||
peek_off = 42,
|
||||
nofcs = 43,
|
||||
lock_filter = 44,
|
||||
select_err_queue = 45,
|
||||
busy_poll = 46,
|
||||
max_pacing_rate = 47,
|
||||
bpf_extensions = 48,
|
||||
incoming_cpu = 49,
|
||||
attach_bpf = 50,
|
||||
attach_reuseport_cbpf = 51,
|
||||
attach_reuseport_ebpf = 52,
|
||||
cnx_advice = 53,
|
||||
meminfo = 55,
|
||||
incoming_napi_id = 56,
|
||||
cookie = 57,
|
||||
peergroups = 59,
|
||||
zerocopy = 60,
|
||||
txtime = 61,
|
||||
bindtoifindex = 62,
|
||||
timestamp_new = 63,
|
||||
timestampns_new = 64,
|
||||
timestamping_new = 65,
|
||||
rcvtimeo_new = 66,
|
||||
sndtimeo_new = 67,
|
||||
detach_reuseport_bpf = 68,
|
||||
_,
|
||||
|
||||
// aliases
|
||||
pub const get_filter: So = .attach_filter;
|
||||
pub const detach_bpf: So = .detach_filter;
|
||||
} else if (is_ppc) enum(u16) {
|
||||
debug = 1,
|
||||
reuseaddr = 2,
|
||||
type = 3,
|
||||
@"error" = 4,
|
||||
dontroute = 5,
|
||||
broadcast = 6,
|
||||
sndbuf = 7,
|
||||
rcvbuf = 8,
|
||||
keepalive = 9,
|
||||
oobinline = 10,
|
||||
no_check = 11,
|
||||
priority = 12,
|
||||
linger = 13,
|
||||
bsdcompat = 14,
|
||||
reuseport = 15,
|
||||
rcvlowat = 16,
|
||||
sndlowat = 17,
|
||||
rcvtimeo = 18,
|
||||
sndtimeo = 19,
|
||||
passcred = 20,
|
||||
peercred = 21,
|
||||
acceptconn = 30,
|
||||
peersec = 31,
|
||||
sndbufforce = 32,
|
||||
rcvbufforce = 33,
|
||||
protocol = 38,
|
||||
domain = 39,
|
||||
security_authentication = 22,
|
||||
security_encryption_transport = 23,
|
||||
security_encryption_network = 24,
|
||||
bindtodevice = 25,
|
||||
attach_filter = 26,
|
||||
detach_filter = 27,
|
||||
peername = 28,
|
||||
timestamp_old = 29,
|
||||
passsec = 34,
|
||||
timestampns_old = 35,
|
||||
mark = 36,
|
||||
timestamping_old = 37,
|
||||
rxq_ovfl = 40,
|
||||
wifi_status = 41,
|
||||
peek_off = 42,
|
||||
nofcs = 43,
|
||||
lock_filter = 44,
|
||||
select_err_queue = 45,
|
||||
busy_poll = 46,
|
||||
max_pacing_rate = 47,
|
||||
bpf_extensions = 48,
|
||||
incoming_cpu = 49,
|
||||
attach_bpf = 50,
|
||||
attach_reuseport_cbpf = 51,
|
||||
attach_reuseport_ebpf = 52,
|
||||
cnx_advice = 53,
|
||||
meminfo = 55,
|
||||
incoming_napi_id = 56,
|
||||
cookie = 57,
|
||||
peergroups = 59,
|
||||
zerocopy = 60,
|
||||
txtime = 61,
|
||||
bindtoifindex = 62,
|
||||
timestamp_new = 63,
|
||||
timestampns_new = 64,
|
||||
timestamping_new = 65,
|
||||
rcvtimeo_new = 66,
|
||||
sndtimeo_new = 67,
|
||||
detach_reuseport_bpf = 68,
|
||||
_,
|
||||
|
||||
// aliases
|
||||
pub const get_filter: So = .attach_filter;
|
||||
pub const detach_bpf: So = .detach_filter;
|
||||
} else if (is_sparc) enum(u16) {
|
||||
debug = 1,
|
||||
reuseaddr = 4,
|
||||
type = 4104,
|
||||
@"error" = 4103,
|
||||
dontroute = 16,
|
||||
broadcast = 32,
|
||||
sndbuf = 4097,
|
||||
rcvbuf = 4098,
|
||||
keepalive = 8,
|
||||
oobinline = 256,
|
||||
no_check = 11,
|
||||
priority = 12,
|
||||
linger = 128,
|
||||
bsdcompat = 1024,
|
||||
reuseport = 512,
|
||||
passcred = 2,
|
||||
peercred = 64,
|
||||
rcvlowat = 2048,
|
||||
sndlowat = 4096,
|
||||
rcvtimeo = 8192,
|
||||
sndtimeo = 16384,
|
||||
acceptconn = 32768,
|
||||
peersec = 30,
|
||||
sndbufforce = 4106,
|
||||
rcvbufforce = 4107,
|
||||
protocol = 4136,
|
||||
domain = 4137,
|
||||
security_authentication = 20481,
|
||||
security_encryption_transport = 20482,
|
||||
security_encryption_network = 20484,
|
||||
bindtodevice = 13,
|
||||
attach_filter = 26,
|
||||
detach_filter = 27,
|
||||
peername = 28,
|
||||
timestamp_old = 29,
|
||||
passsec = 31,
|
||||
timestampns_old = 33,
|
||||
mark = 34,
|
||||
timestamping_old = 35,
|
||||
rxq_ovfl = 36,
|
||||
wifi_status = 37,
|
||||
peek_off = 38,
|
||||
nofcs = 39,
|
||||
lock_filter = 40,
|
||||
select_err_queue = 41,
|
||||
busy_poll = 48,
|
||||
max_pacing_rate = 49,
|
||||
bpf_extensions = 50,
|
||||
incoming_cpu = 51,
|
||||
attach_bpf = 52,
|
||||
attach_reuseport_cbpf = 53,
|
||||
attach_reuseport_ebpf = 54,
|
||||
cnx_advice = 55,
|
||||
meminfo = 57,
|
||||
incoming_napi_id = 58,
|
||||
cookie = 59,
|
||||
peergroups = 61,
|
||||
zerocopy = 62,
|
||||
txtime = 63,
|
||||
bindtoifindex = 65,
|
||||
timestamp_new = 70,
|
||||
timestampns_new = 66,
|
||||
timestamping_new = 67,
|
||||
rcvtimeo_new = 68,
|
||||
sndtimeo_new = 69,
|
||||
detach_reuseport_bpf = 71,
|
||||
_,
|
||||
|
||||
// aliases
|
||||
pub const get_filter: So = .attach_filter;
|
||||
pub const detach_bpf: So = .detach_filter;
|
||||
} else enum(u16) {
|
||||
debug = 1,
|
||||
reuseaddr = 2,
|
||||
type = 3,
|
||||
@"error" = 4,
|
||||
dontroute = 5,
|
||||
broadcast = 6,
|
||||
sndbuf = 7,
|
||||
rcvbuf = 8,
|
||||
keepalive = 9,
|
||||
oobinline = 10,
|
||||
no_check = 11,
|
||||
priority = 12,
|
||||
linger = 13,
|
||||
bsdcompat = 14,
|
||||
reuseport = 15,
|
||||
passcred = 16,
|
||||
peercred = 17,
|
||||
rcvlowat = 18,
|
||||
sndlowat = 19,
|
||||
rcvtimeo = 20,
|
||||
sndtimeo = 21,
|
||||
acceptconn = 30,
|
||||
peersec = 31,
|
||||
sndbufforce = 32,
|
||||
rcvbufforce = 33,
|
||||
passsec = 34,
|
||||
timestampns_old = 35,
|
||||
mark = 36,
|
||||
timestamping_old = 37,
|
||||
protocol = 38,
|
||||
domain = 39,
|
||||
rxq_ovfl = 40,
|
||||
wifi_status = 41,
|
||||
peek_off = 42,
|
||||
nofcs = 43,
|
||||
lock_filter = 44,
|
||||
select_err_queue = 45,
|
||||
busy_poll = 46,
|
||||
max_pacing_rate = 47,
|
||||
bpf_extensions = 48,
|
||||
incoming_cpu = 49,
|
||||
attach_bpf = 50,
|
||||
attach_reuseport_cbpf = 51,
|
||||
attach_reuseport_ebpf = 52,
|
||||
cnx_advice = 53,
|
||||
meminfo = 55,
|
||||
incoming_napi_id = 56,
|
||||
cookie = 57,
|
||||
peergroups = 59,
|
||||
zerocopy = 60,
|
||||
txtime = 61,
|
||||
bindtoifindex = 62,
|
||||
timestamp_new = 63,
|
||||
timestampns_new = 64,
|
||||
timestamping_new = 65,
|
||||
rcvtimeo_new = 66,
|
||||
sndtimeo_new = 67,
|
||||
detach_reuseport_bpf = 68,
|
||||
security_authentication = 22,
|
||||
security_encryption_transport = 23,
|
||||
security_encryption_network = 24,
|
||||
bindtodevice = 25,
|
||||
attach_filter = 26,
|
||||
detach_filter = 27,
|
||||
peername = 28,
|
||||
timestamp_old = 29,
|
||||
_,
|
||||
|
||||
// aliases
|
||||
pub const get_filter: So = .attach_filter;
|
||||
pub const detach_bpf: So = .detach_filter;
|
||||
};
|
||||
|
||||
// COMMIT: add SO constants
|
||||
/// Backwards-compatible SO_* constants
|
||||
pub const SO = struct {
|
||||
pub const DEBUG: u16 = @intFromEnum(So.debug);
|
||||
pub const REUSEADDR: u16 = @intFromEnum(So.reuseaddr);
|
||||
pub const KEEPALIVE: u16 = @intFromEnum(So.keepalive);
|
||||
pub const DONTROUTE: u16 = @intFromEnum(So.dontroute);
|
||||
pub const BROADCAST: u16 = @intFromEnum(So.broadcast);
|
||||
pub const LINGER: u16 = @intFromEnum(So.linger);
|
||||
pub const OOBINLINE: u16 = @intFromEnum(So.oobinline);
|
||||
pub const REUSEPORT: u16 = @intFromEnum(So.reuseport);
|
||||
pub const SNDBUF: u16 = @intFromEnum(So.sndbuf);
|
||||
pub const RCVBUF: u16 = @intFromEnum(So.rcvbuf);
|
||||
pub const SNDLOWAT: u16 = @intFromEnum(So.sndlowat);
|
||||
pub const RCVLOWAT: u16 = @intFromEnum(So.rcvlowat);
|
||||
pub const RCVTIMEO: u16 = @intFromEnum(So.rcvtimeo);
|
||||
pub const SNDTIMEO: u16 = @intFromEnum(So.sndtimeo);
|
||||
pub const ERROR: u16 = @intFromEnum(So.@"error");
|
||||
pub const TYPE: u16 = @intFromEnum(So.type);
|
||||
pub const ACCEPTCONN: u16 = @intFromEnum(So.acceptconn);
|
||||
pub const PROTOCOL: u16 = @intFromEnum(So.protocol);
|
||||
pub const DOMAIN: u16 = @intFromEnum(So.domain);
|
||||
pub const NO_CHECK: u16 = @intFromEnum(So.no_check);
|
||||
pub const PRIORITY: u16 = @intFromEnum(So.priority);
|
||||
pub const BSDCOMPAT: u16 = @intFromEnum(So.bsdcompat);
|
||||
pub const PASSCRED: u16 = @intFromEnum(So.passcred);
|
||||
pub const PEERCRED: u16 = @intFromEnum(So.peercred);
|
||||
pub const PEERSEC: u16 = @intFromEnum(So.peersec);
|
||||
pub const SNDBUFFORCE: u16 = @intFromEnum(So.sndbufforce);
|
||||
pub const RCVBUFFORCE: u16 = @intFromEnum(So.rcvbufforce);
|
||||
pub const SECURITY_AUTHENTICATION: u16 = @intFromEnum(So.security_authentication);
|
||||
pub const SECURITY_ENCRYPTION_TRANSPORT: u16 = @intFromEnum(So.security_encryption_transport);
|
||||
pub const SECURITY_ENCRYPTION_NETWORK: u16 = @intFromEnum(So.security_encryption_network);
|
||||
pub const BINDTODEVICE: u16 = @intFromEnum(So.bindtodevice);
|
||||
pub const ATTACH_FILTER: u16 = @intFromEnum(So.attach_filter);
|
||||
pub const DETACH_FILTER: u16 = @intFromEnum(So.detach_filter);
|
||||
pub const GET_FILTER: u16 = ATTACH_FILTER; // alias
|
||||
pub const PEERNAME: u16 = @intFromEnum(So.peername);
|
||||
pub const TIMESTAMP_OLD: u16 = @intFromEnum(So.timestamp_old);
|
||||
pub const PASSSEC: u16 = @intFromEnum(So.passsec);
|
||||
pub const TIMESTAMPNS_OLD: u16 = @intFromEnum(So.timestampns_old);
|
||||
pub const MARK: u16 = @intFromEnum(So.mark);
|
||||
pub const TIMESTAMPING_OLD: u16 = @intFromEnum(So.timestamping_old);
|
||||
pub const RXQ_OVFL: u16 = @intFromEnum(So.rxq_ovfl);
|
||||
pub const WIFI_STATUS: u16 = @intFromEnum(So.wifi_status);
|
||||
pub const PEEK_OFF: u16 = @intFromEnum(So.peek_off);
|
||||
pub const NOFCS: u16 = @intFromEnum(So.nofcs);
|
||||
pub const LOCK_FILTER: u16 = @intFromEnum(So.lock_filter);
|
||||
pub const SELECT_ERR_QUEUE: u16 = @intFromEnum(So.select_err_queue);
|
||||
pub const BUSY_POLL: u16 = @intFromEnum(So.busy_poll);
|
||||
pub const MAX_PACING_RATE: u16 = @intFromEnum(So.max_pacing_rate);
|
||||
pub const BPF_EXTENSIONS: u16 = @intFromEnum(So.bpf_extensions);
|
||||
pub const INCOMING_CPU: u16 = @intFromEnum(So.incoming_cpu);
|
||||
pub const ATTACH_BPF: u16 = @intFromEnum(So.attach_bpf);
|
||||
pub const DETACH_BPF: u16 = DETACH_FILTER; // alias in original
|
||||
pub const ATTACH_REUSEPORT_CBPF: u16 = @intFromEnum(So.attach_reuseport_cbpf);
|
||||
pub const ATTACH_REUSEPORT_EBPF: u16 = @intFromEnum(So.attach_reuseport_ebpf);
|
||||
pub const CNX_ADVICE: u16 = @intFromEnum(So.cnx_advice);
|
||||
pub const MEMINFO: u16 = @intFromEnum(So.meminfo);
|
||||
pub const INCOMING_NAPI_ID: u16 = @intFromEnum(So.incoming_napi_id);
|
||||
pub const COOKIE: u16 = @intFromEnum(So.cookie);
|
||||
pub const PEERGROUPS: u16 = @intFromEnum(So.peergroups);
|
||||
pub const ZEROCOPY: u16 = @intFromEnum(So.zerocopy);
|
||||
pub const TXTIME: u16 = @intFromEnum(So.txtime);
|
||||
pub const BINDTOIFINDEX: u16 = @intFromEnum(So.bindtoifindex);
|
||||
pub const TIMESTAMP_NEW: u16 = @intFromEnum(So.timestamp_new);
|
||||
pub const TIMESTAMPNS_NEW: u16 = @intFromEnum(So.timestampns_new);
|
||||
pub const TIMESTAMPING_NEW: u16 = @intFromEnum(So.timestamping_new);
|
||||
pub const RCVTIMEO_NEW: u16 = @intFromEnum(So.rcvtimeo_new);
|
||||
pub const SNDTIMEO_NEW: u16 = @intFromEnum(So.sndtimeo_new);
|
||||
pub const DETACH_REUSEPORT_BPF: u16 = @intFromEnum(So.detach_reuseport_bpf);
|
||||
};
|
||||
|
||||
pub const SCM = struct {
|
||||
|
|
@ -4517,37 +4604,100 @@ pub const SCM = struct {
|
|||
pub const TXTIME = SO.TXTIME;
|
||||
};
|
||||
|
||||
pub const SOL = struct {
|
||||
pub const SOCKET = if (is_mips or is_sparc) 65535 else 1;
|
||||
/// Deprecated in favor of Sol
|
||||
pub const SOL = Sol;
|
||||
// https://github.com/torvalds/linux/blob/0d97f2067c166eb495771fede9f7b73999c67f66/include/linux/socket.h#L347C1-L388C22
|
||||
/// Socket option level for setsockopt(2)/getsockopt(2)
|
||||
pub const Sol = enum(u16) {
|
||||
ip = 0,
|
||||
socket = if (is_mips or is_sparc) 65535 else 1,
|
||||
tcp = 6,
|
||||
udp = 17,
|
||||
ipv6 = 41,
|
||||
icmpv6 = 58,
|
||||
sctp = 132,
|
||||
/// UDP-Lite (RFC 3828)
|
||||
udplite = 136,
|
||||
raw = 255,
|
||||
ipx = 256,
|
||||
ax25 = 257,
|
||||
atalk = 258,
|
||||
netrom = 259,
|
||||
rose = 260,
|
||||
decnet = 261,
|
||||
x25 = 262,
|
||||
packet = 263,
|
||||
/// ATM layer (cell level)
|
||||
atm = 264,
|
||||
/// ATM Adaption Layer (packet level)
|
||||
aal = 265,
|
||||
irda = 266,
|
||||
netbeui = 267,
|
||||
llc = 268,
|
||||
dccp = 269,
|
||||
netlink = 270,
|
||||
tipc = 271,
|
||||
rxrpc = 272,
|
||||
pppol2tp = 273,
|
||||
bluetooth = 274,
|
||||
pnpipe = 275,
|
||||
rds = 276,
|
||||
iucv = 277,
|
||||
caif = 278,
|
||||
alg = 279,
|
||||
nfc = 280,
|
||||
kcm = 281,
|
||||
tls = 282,
|
||||
xdp = 283,
|
||||
mptcp = 284,
|
||||
mctp = 285,
|
||||
smc = 286,
|
||||
vsock = 287,
|
||||
_,
|
||||
|
||||
pub const IP = 0;
|
||||
pub const IPV6 = 41;
|
||||
pub const ICMPV6 = 58;
|
||||
/// Deprecated constants for compatibility with current Zig
|
||||
pub const IP: u16 = @intFromEnum(Sol.ip);
|
||||
pub const SOCKET: u16 = @intFromEnum(Sol.socket);
|
||||
pub const TCP: u16 = @intFromEnum(Sol.tcp);
|
||||
pub const UDP: u16 = @intFromEnum(Sol.udp);
|
||||
pub const IPV6: u16 = @intFromEnum(Sol.ipv6);
|
||||
pub const ICMPV6: u16 = @intFromEnum(Sol.icmpv6);
|
||||
pub const SCTP: u16 = @intFromEnum(Sol.sctp);
|
||||
pub const UDPLITE: u16 = @intFromEnum(Sol.udplite);
|
||||
|
||||
pub const RAW = 255;
|
||||
pub const DECNET = 261;
|
||||
pub const X25 = 262;
|
||||
pub const PACKET = 263;
|
||||
pub const ATM = 264;
|
||||
pub const AAL = 265;
|
||||
pub const IRDA = 266;
|
||||
pub const NETBEUI = 267;
|
||||
pub const LLC = 268;
|
||||
pub const DCCP = 269;
|
||||
pub const NETLINK = 270;
|
||||
pub const TIPC = 271;
|
||||
pub const RXRPC = 272;
|
||||
pub const PPPOL2TP = 273;
|
||||
pub const BLUETOOTH = 274;
|
||||
pub const PNPIPE = 275;
|
||||
pub const RDS = 276;
|
||||
pub const IUCV = 277;
|
||||
pub const CAIF = 278;
|
||||
pub const ALG = 279;
|
||||
pub const NFC = 280;
|
||||
pub const KCM = 281;
|
||||
pub const TLS = 282;
|
||||
pub const XDP = 283;
|
||||
pub const RAW: u16 = @intFromEnum(Sol.raw);
|
||||
pub const IPX: u16 = @intFromEnum(Sol.ipx);
|
||||
pub const AX25: u16 = @intFromEnum(Sol.ax25);
|
||||
pub const ATALK: u16 = @intFromEnum(Sol.atalk);
|
||||
pub const NETROM: u16 = @intFromEnum(Sol.netrom);
|
||||
pub const ROSE: u16 = @intFromEnum(Sol.rose);
|
||||
pub const DECNET: u16 = @intFromEnum(Sol.decnet);
|
||||
pub const X25: u16 = @intFromEnum(Sol.x25);
|
||||
pub const PACKET: u16 = @intFromEnum(Sol.packet);
|
||||
pub const ATM: u16 = @intFromEnum(Sol.atm);
|
||||
pub const AAL: u16 = @intFromEnum(Sol.aal);
|
||||
pub const IRDA: u16 = @intFromEnum(Sol.irda);
|
||||
pub const NETBEUI: u16 = @intFromEnum(Sol.netbeui);
|
||||
pub const LLC: u16 = @intFromEnum(Sol.llc);
|
||||
pub const DCCP: u16 = @intFromEnum(Sol.dccp);
|
||||
pub const NETLINK: u16 = @intFromEnum(Sol.netlink);
|
||||
pub const TIPC: u16 = @intFromEnum(Sol.tipc);
|
||||
pub const RXRPC: u16 = @intFromEnum(Sol.rxrpc);
|
||||
pub const PPPOL2TP: u16 = @intFromEnum(Sol.pppol2tp);
|
||||
pub const BLUETOOTH: u16 = @intFromEnum(Sol.bluetooth);
|
||||
pub const PNPIPE: u16 = @intFromEnum(Sol.pnpipe);
|
||||
pub const RDS: u16 = @intFromEnum(Sol.rds);
|
||||
pub const IUCV: u16 = @intFromEnum(Sol.iucv);
|
||||
pub const CAIF: u16 = @intFromEnum(Sol.caif);
|
||||
pub const ALG: u16 = @intFromEnum(Sol.alg);
|
||||
pub const NFC: u16 = @intFromEnum(Sol.nfc);
|
||||
pub const KCM: u16 = @intFromEnum(Sol.kcm);
|
||||
pub const TLS: u16 = @intFromEnum(Sol.tls);
|
||||
pub const XDP: u16 = @intFromEnum(Sol.xdp);
|
||||
pub const MPTCP: u16 = @intFromEnum(Sol.mptcp);
|
||||
pub const MCTP: u16 = @intFromEnum(Sol.mctp);
|
||||
pub const SMC: u16 = @intFromEnum(Sol.smc);
|
||||
pub const VSOCK: u16 = @intFromEnum(Sol.vsock);
|
||||
};
|
||||
|
||||
pub const SOMAXCONN = 128;
|
||||
|
|
@ -7123,7 +7273,7 @@ pub const utsname = extern struct {
|
|||
pub const HOST_NAME_MAX = 64;
|
||||
|
||||
// COMMIT: RenameFlags
|
||||
pub const RenameFlags = packed struct(u32) {
|
||||
pub const Rename = packed struct(u32) {
|
||||
/// Don't overwrite target
|
||||
noreplace: bool = false,
|
||||
/// Exchange source and dest
|
||||
|
|
|
|||
|
|
@ -671,8 +671,8 @@ pub fn send_zc_fixed(
|
|||
user_data: u64,
|
||||
fd: linux.fd_t,
|
||||
buffer: []const u8,
|
||||
send_flags: u32,
|
||||
zc_flags: u16,
|
||||
send_flags: linux.Msg,
|
||||
zc_flags: Sqe.SendRecv,
|
||||
buf_index: u16,
|
||||
) !*Sqe {
|
||||
const sqe = try self.get_sqe();
|
||||
|
|
@ -721,7 +721,7 @@ pub fn sendmsg_zc(
|
|||
user_data: u64,
|
||||
fd: linux.fd_t,
|
||||
msg: *const linux.msghdr_const,
|
||||
flags: u32,
|
||||
flags: linux.Msg,
|
||||
) !*Sqe {
|
||||
const sqe = try self.get_sqe();
|
||||
sqe.prep_sendmsg_zc(fd, msg, flags);
|
||||
|
|
@ -900,7 +900,7 @@ pub fn poll_update(
|
|||
old_user_data: u64,
|
||||
new_user_data: u64,
|
||||
poll_mask: u32,
|
||||
flags: u32,
|
||||
flags: u32, // TODO: what are the flags
|
||||
) !*Sqe {
|
||||
const sqe = try self.get_sqe();
|
||||
sqe.prep_poll_update(old_user_data, new_user_data, poll_mask, flags);
|
||||
|
|
@ -986,7 +986,7 @@ pub fn renameat(
|
|||
old_path: [*:0]const u8,
|
||||
new_dir_fd: linux.fd_t,
|
||||
new_path: [*:0]const u8,
|
||||
flags: linux.RenameFlags,
|
||||
flags: linux.Rename,
|
||||
) !*Sqe {
|
||||
const sqe = try self.get_sqe();
|
||||
sqe.prep_renameat(old_dir_fd, old_path, new_dir_fd, new_path, flags);
|
||||
|
|
@ -1100,7 +1100,7 @@ pub fn waitid(
|
|||
id: i32,
|
||||
infop: *linux.siginfo_t,
|
||||
options: linux.W,
|
||||
flags: u32,
|
||||
flags: u32, // TODO: wait flags
|
||||
) !*Sqe {
|
||||
const sqe = try self.get_sqe();
|
||||
sqe.prep_waitid(id_type, id, infop, options, flags);
|
||||
|
|
@ -1176,7 +1176,7 @@ pub fn register_files_sparse(self: *IoUring, nr_files: u32) !void {
|
|||
self.fd,
|
||||
.REGISTER_FILES2,
|
||||
@ptrCast(®),
|
||||
@as(u32, @sizeOf(linux.io_uring_rsrc_register)),
|
||||
@as(u32, @sizeOf(RsrcRegister)),
|
||||
);
|
||||
|
||||
return handle_registration_result(res);
|
||||
|
|
@ -1197,7 +1197,7 @@ pub fn register_file_alloc_range(self: *IoUring, offset: u32, len: u32) !void {
|
|||
self.fd,
|
||||
.REGISTER_FILE_ALLOC_RANGE,
|
||||
@ptrCast(&range),
|
||||
@as(u32, @sizeOf(linux.io_uring_file_index_range)),
|
||||
@as(u32, @sizeOf(FileIndexRange)),
|
||||
);
|
||||
|
||||
return handle_registration_result(res);
|
||||
|
|
@ -1383,7 +1383,7 @@ pub fn bind(
|
|||
fd: linux.fd_t,
|
||||
addr: *const posix.sockaddr,
|
||||
addrlen: posix.socklen_t,
|
||||
flags: u32,
|
||||
flags: u32, // TODO: bind flags
|
||||
) !*Sqe {
|
||||
const sqe = try self.get_sqe();
|
||||
sqe.prep_bind(fd, addr, addrlen, flags);
|
||||
|
|
@ -1399,7 +1399,7 @@ pub fn listen(
|
|||
user_data: u64,
|
||||
fd: linux.fd_t,
|
||||
backlog: usize,
|
||||
flags: u32,
|
||||
flags: u32, // TODO: listen flags
|
||||
) !*Sqe {
|
||||
const sqe = try self.get_sqe();
|
||||
sqe.prep_listen(fd, backlog, flags);
|
||||
|
|
@ -1415,8 +1415,8 @@ pub fn cmd_sock(
|
|||
user_data: u64,
|
||||
cmd_op: SocketOp,
|
||||
fd: linux.fd_t,
|
||||
level: u32, // linux.SOL
|
||||
optname: u32, // linux.SO
|
||||
level: linux.Sol,
|
||||
optname: linux.So,
|
||||
optval: u64, // pointer to the option value
|
||||
optlen: u32, // size of the option value
|
||||
) !*Sqe {
|
||||
|
|
@ -1433,8 +1433,8 @@ pub fn setsockopt(
|
|||
self: *IoUring,
|
||||
user_data: u64,
|
||||
fd: linux.fd_t,
|
||||
level: u32, // linux.SOL
|
||||
optname: u32, // linux.SO
|
||||
level: linux.Sol,
|
||||
optname: linux.So,
|
||||
opt: []const u8,
|
||||
) !*Sqe {
|
||||
return try self.cmd_sock(
|
||||
|
|
@ -1455,8 +1455,8 @@ pub fn getsockopt(
|
|||
self: *IoUring,
|
||||
user_data: u64,
|
||||
fd: linux.fd_t,
|
||||
level: u32, // linux.SOL
|
||||
optname: u32, // linux.SO
|
||||
level: linux.Sol,
|
||||
optname: linux.So,
|
||||
opt: []u8,
|
||||
) !*Sqe {
|
||||
return try self.cmd_sock(
|
||||
|
|
@ -1944,7 +1944,7 @@ pub const Sqe = extern struct {
|
|||
sqe: *Sqe,
|
||||
epfd: linux.fd_t,
|
||||
fd: linux.fd_t,
|
||||
op: u32,
|
||||
op: u32, // TODO: what is the type of OP
|
||||
ev: ?*linux.epoll_event,
|
||||
) void {
|
||||
sqe.prep_rw(.EPOLL_CTL, epfd, @intFromPtr(ev), op, @intCast(fd));
|
||||
|
|
@ -2116,7 +2116,7 @@ pub const Sqe = extern struct {
|
|||
pub fn prep_poll_add(
|
||||
sqe: *Sqe,
|
||||
fd: linux.fd_t,
|
||||
poll_mask: linux.POLL,
|
||||
poll_mask: linux.POLL, // TODO: Poll mask typed
|
||||
) void {
|
||||
sqe.prep_rw(.POLL_ADD, fd, @intFromPtr(@as(?*anyopaque, null)), 0, 0);
|
||||
// Poll masks previously used to comprise of 16 bits in the flags union of
|
||||
|
|
@ -2139,7 +2139,7 @@ pub const Sqe = extern struct {
|
|||
sqe: *Sqe,
|
||||
old_user_data: u64,
|
||||
new_user_data: u64,
|
||||
poll_mask: linux.POLL,
|
||||
poll_mask: linux.POLL, //TODO: Poll mask
|
||||
flags: uflags.Poll,
|
||||
) void {
|
||||
sqe.prep_rw(.POLL_REMOVE, -1, old_user_data, flags, new_user_data);
|
||||
|
|
@ -2226,7 +2226,7 @@ pub const Sqe = extern struct {
|
|||
old_path: [*:0]const u8,
|
||||
new_dir_fd: linux.fd_t,
|
||||
new_path: [*:0]const u8,
|
||||
flags: linux.RenameFlags,
|
||||
flags: linux.Rename,
|
||||
) void {
|
||||
sqe.prep_rw(
|
||||
.RENAMEAT,
|
||||
|
|
@ -2335,8 +2335,7 @@ pub const Sqe = extern struct {
|
|||
domain: linux.Af,
|
||||
socket_type: linux.Sock,
|
||||
protocol: linux.IpProto,
|
||||
/// flags is unused
|
||||
flags: u32,
|
||||
flags: u32, // flags is unused
|
||||
) void {
|
||||
sqe.prep_rw(.SOCKET, @intFromEnum(domain), 0, @intFromEnum(protocol), @intCast(@as(u32, @bitCast(socket_type))));
|
||||
sqe.rw_flags = flags;
|
||||
|
|
@ -2347,8 +2346,7 @@ pub const Sqe = extern struct {
|
|||
domain: linux.Af,
|
||||
socket_type: linux.Sock,
|
||||
protocol: linux.IpProto,
|
||||
/// flags is unused
|
||||
flags: u32,
|
||||
flags: u32, // flags is unused
|
||||
file_index: u32,
|
||||
) void {
|
||||
prep_socket(sqe, domain, socket_type, protocol, flags);
|
||||
|
|
@ -2405,8 +2403,8 @@ pub const Sqe = extern struct {
|
|||
sqe: *Sqe,
|
||||
cmd_op: SocketOp,
|
||||
fd: linux.fd_t,
|
||||
level: u32, // TODO: linux.SOL,
|
||||
optname: u32, // TODO: linux.SO,
|
||||
level: linux.Sol,
|
||||
optname: linux.So,
|
||||
optval: u64,
|
||||
optlen: u32,
|
||||
) void {
|
||||
|
|
@ -2418,8 +2416,8 @@ pub const Sqe = extern struct {
|
|||
level: u32,
|
||||
optname: u32,
|
||||
}{
|
||||
.level = level,
|
||||
.optname = optname,
|
||||
.level = @intFromEnum(level),
|
||||
.optname = @intFromEnum(optname),
|
||||
});
|
||||
// splice_fd_in if overloaded u32 -> i32
|
||||
sqe.splice_fd_in = @bitCast(optlen);
|
||||
|
|
@ -2640,6 +2638,7 @@ pub const BufferGroup = struct {
|
|||
allocator.free(self.heads);
|
||||
}
|
||||
|
||||
// TODO: recv flags
|
||||
// Prepare recv operation which will select buffer from this group.
|
||||
pub fn recv(self: *BufferGroup, user_data: u64, fd: posix.fd_t, flags: u32) !*Sqe {
|
||||
var sqe = try self.ring.get_sqe();
|
||||
|
|
@ -2651,6 +2650,7 @@ pub const BufferGroup = struct {
|
|||
return sqe;
|
||||
}
|
||||
|
||||
// TODO: recv_multishot flags
|
||||
// Prepare multishot recv operation which will select buffer from this group.
|
||||
pub fn recv_multishot(self: *BufferGroup, user_data: u64, fd: posix.fd_t, flags: u32) !*Sqe {
|
||||
var sqe = try self.recv(user_data, fd, flags);
|
||||
|
|
@ -2732,6 +2732,7 @@ pub const SqOffsets = extern struct {
|
|||
ring_mask: u32,
|
||||
/// entries in ring
|
||||
ring_entries: u32,
|
||||
// TODO: find type of this flags
|
||||
/// ring flags
|
||||
flags: u32,
|
||||
/// number of sqes not submitted
|
||||
|
|
@ -2750,6 +2751,7 @@ pub const CqOffsets = extern struct {
|
|||
ring_entries: u32,
|
||||
overflow: u32,
|
||||
cqes: u32,
|
||||
// TODO: find type of these flags
|
||||
flags: u32,
|
||||
resv: u32,
|
||||
user_addr: u64,
|
||||
|
|
@ -2809,6 +2811,7 @@ pub const MemRegionReg = extern struct {
|
|||
/// matches io_uring_rsrc_register in liburing
|
||||
pub const RsrcRegister = extern struct {
|
||||
nr: u32,
|
||||
// TODO: find type of these flags
|
||||
flags: u32,
|
||||
resv2: u64,
|
||||
data: u64,
|
||||
|
|
@ -2878,6 +2881,7 @@ pub const Restriction = extern struct {
|
|||
register_op: RegisterOp,
|
||||
/// IORING_RESTRICTION_SQE_OP
|
||||
sqe_op: Op,
|
||||
// TODO: find type of these flags
|
||||
/// IORING_RESTRICTION_SQE_FLAGS_*
|
||||
sqe_flags: u8,
|
||||
},
|
||||
|
|
@ -3035,6 +3039,7 @@ pub const RecvmsgOut = extern struct {
|
|||
namelen: u32,
|
||||
controllen: u32,
|
||||
payloadlen: u32,
|
||||
// TODO: find type of these flags
|
||||
flags: u32,
|
||||
};
|
||||
|
||||
|
|
@ -3820,12 +3825,14 @@ test "splice/read" {
|
|||
try testing.expectEqual(Op.SPLICE, sqe_splice_to_pipe.opcode);
|
||||
try testing.expectEqual(@as(u64, 0), sqe_splice_to_pipe.addr);
|
||||
try testing.expectEqual(pipe_offset, sqe_splice_to_pipe.off);
|
||||
// TODO: use io_link function
|
||||
sqe_splice_to_pipe.flags.IO_LINK = true;
|
||||
|
||||
const sqe_splice_from_pipe = try ring.splice(0x22222222, fds[0], pipe_offset, fd_dst, 10, buffer_write.len);
|
||||
try testing.expectEqual(Op.SPLICE, sqe_splice_from_pipe.opcode);
|
||||
try testing.expectEqual(pipe_offset, sqe_splice_from_pipe.addr);
|
||||
try testing.expectEqual(@as(u64, 10), sqe_splice_from_pipe.off);
|
||||
// TODO: use io_link function
|
||||
sqe_splice_from_pipe.flags.IO_LINK = true;
|
||||
|
||||
const sqe_read = try ring.read(0x33333333, fd_dst, .{ .buffer = buffer_read[0..] }, 10);
|
||||
|
|
@ -3897,6 +3904,7 @@ test "write_fixed/read_fixed" {
|
|||
const sqe_write = try ring.write_fixed(0x45454545, fd, &buffers[0], 3, 0);
|
||||
try testing.expectEqual(Op.WRITE_FIXED, sqe_write.opcode);
|
||||
try testing.expectEqual(@as(u64, 3), sqe_write.off);
|
||||
// TODO: use io_link function
|
||||
sqe_write.flags.IO_LINK = true;
|
||||
|
||||
const sqe_read = try ring.read_fixed(0x12121212, fd, &buffers[1], 0, 1);
|
||||
|
|
@ -4026,6 +4034,7 @@ test "accept/connect/send/recv" {
|
|||
var buffer_recv = [_]u8{ 0, 1, 0, 1, 0 };
|
||||
|
||||
const sqe_send = try ring.send(0xeeeeeeee, socket_test_harness.client, buffer_send[0..], .{});
|
||||
// TODO: use io_link function
|
||||
sqe_send.flags.IO_LINK = true;
|
||||
_ = try ring.recv(0xffffffff, socket_test_harness.server, .{ .buffer = buffer_recv[0..] }, .{});
|
||||
try testing.expectEqual(@as(u32, 2), try ring.submit());
|
||||
|
|
@ -4286,6 +4295,7 @@ test "accept/connect/recv/link_timeout" {
|
|||
var buffer_recv = [_]u8{ 0, 1, 0, 1, 0 };
|
||||
|
||||
const sqe_recv = try ring.recv(0xffffffff, socket_test_harness.server, .{ .buffer = buffer_recv[0..] }, .{});
|
||||
// TODO: use io_link function
|
||||
sqe_recv.flags.IO_LINK = true;
|
||||
|
||||
const ts = linux.kernel_timespec{ .sec = 0, .nsec = 1000000 };
|
||||
|
|
@ -4511,6 +4521,7 @@ test "register_files_update" {
|
|||
{
|
||||
const sqe = try ring.read(0xcccccccc, fd_index, .{ .buffer = &buffer }, 0);
|
||||
try testing.expectEqual(Op.READ, sqe.opcode);
|
||||
// TODO: use setflags function
|
||||
sqe.flags.FIXED_FILE = true;
|
||||
|
||||
try testing.expectEqual(@as(u32, 1), try ring.submit());
|
||||
|
|
@ -4532,6 +4543,7 @@ test "register_files_update" {
|
|||
// Next read should still work since fd_index in the registered file descriptors hasn't been updated yet.
|
||||
const sqe = try ring.read(0xcccccccc, fd_index, .{ .buffer = &buffer }, 0);
|
||||
try testing.expectEqual(Op.READ, sqe.opcode);
|
||||
// TODO: use setflags function
|
||||
sqe.flags.FIXED_FILE = true;
|
||||
|
||||
try testing.expectEqual(@as(u32, 1), try ring.submit());
|
||||
|
|
@ -4549,6 +4561,7 @@ test "register_files_update" {
|
|||
// Now this should fail since both fds are sparse (-1)
|
||||
const sqe = try ring.read(0xcccccccc, fd_index, .{ .buffer = &buffer }, 0);
|
||||
try testing.expectEqual(Op.READ, sqe.opcode);
|
||||
// TODO: use setflags function
|
||||
sqe.flags.FIXED_FILE = true;
|
||||
|
||||
try testing.expectEqual(@as(u32, 1), try ring.submit());
|
||||
|
|
@ -5412,6 +5425,7 @@ test "accept/connect/send_zc/recv" {
|
|||
|
||||
// zero-copy send
|
||||
const sqe_send = try ring.send_zc(0xeeeeeeee, socket_test_harness.client, buffer_send[0..], .{}, .{});
|
||||
// TODO: use io_link function
|
||||
sqe_send.flags.IO_LINK = true;
|
||||
_ = try ring.recv(0xffffffff, socket_test_harness.server, .{ .buffer = buffer_recv[0..] }, .{});
|
||||
try testing.expectEqual(@as(u32, 2), try ring.submit());
|
||||
|
|
@ -5504,6 +5518,7 @@ test "accept_direct" {
|
|||
// Fd field is set to registered file index, returned by accept.
|
||||
// Flag linux.IOSQE_FIXED_FILE must be set.
|
||||
const recv_sqe = try ring.recv(read_userdata, fd_index, .{ .buffer = &buffer_recv }, .{});
|
||||
// TODO: use setflags function
|
||||
recv_sqe.flags.FIXED_FILE = true;
|
||||
try testing.expectEqual(@as(u32, 1), try ring.submit());
|
||||
|
||||
|
|
@ -5738,7 +5753,7 @@ test "openat_direct/close_direct" {
|
|||
try testing.expect(cqe.res == 0); // res is 0 when we specify index
|
||||
|
||||
// let kernel choose registered file index
|
||||
_ = try ring.openat_direct(user_data, tmp.dir.fd, path, flags, mode, linux.IORING_FILE_INDEX_ALLOC);
|
||||
_ = try ring.openat_direct(user_data, tmp.dir.fd, path, flags, mode, constants.FILE_INDEX_ALLOC);
|
||||
try testing.expectEqual(@as(u32, 1), try ring.submit());
|
||||
cqe = try ring.copy_cqe();
|
||||
try testing.expectEqual(posix.E.SUCCESS, cqe.err());
|
||||
|
|
@ -6237,8 +6252,8 @@ test "bind/listen/connect" {
|
|||
|
||||
// Prepare: set socket option * 2, bind, listen
|
||||
var optval: u32 = 1;
|
||||
(try ring.setsockopt(2, listen_fd, linux.SOL.SOCKET, linux.SO.REUSEADDR, mem.asBytes(&optval))).link_next();
|
||||
(try ring.setsockopt(3, listen_fd, linux.SOL.SOCKET, linux.SO.REUSEPORT, mem.asBytes(&optval))).link_next();
|
||||
(try ring.setsockopt(2, listen_fd, .socket, .reuseaddr, mem.asBytes(&optval))).link_next();
|
||||
(try ring.setsockopt(3, listen_fd, .socket, .reuseport, mem.asBytes(&optval))).link_next();
|
||||
(try ring.bind(4, listen_fd, addrAny(&addr), @sizeOf(linux.sockaddr.in), 0)).link_next();
|
||||
_ = try ring.listen(5, listen_fd, 1, 0);
|
||||
// Submit 4 operations
|
||||
|
|
@ -6252,7 +6267,7 @@ test "bind/listen/connect" {
|
|||
|
||||
// Check that socket option is set
|
||||
optval = 0;
|
||||
_ = try ring.getsockopt(5, listen_fd, linux.SOL.SOCKET, linux.SO.REUSEADDR, mem.asBytes(&optval));
|
||||
_ = try ring.getsockopt(5, listen_fd, .socket, .reuseaddr, mem.asBytes(&optval));
|
||||
try testing.expectEqual(1, try ring.submit());
|
||||
cqe = try ring.copy_cqe();
|
||||
try testing.expectEqual(5, cqe.user_data);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue