authorgravatar for devnexen@gmail.comDavid Carlier <devnexen@gmail.com> 2023-05-12 22:13:25+01:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2023-05-13 12:13:02+03:00
log6f418c11e1ad1150fbdb002cfe1be92bda4e93cb
tree0fee66a95543b4d13f8a98fad3622deeb4e1eea4
parentcceadf52baff2590c1b38c469b1177918183dfe8

linux adding some NUMA support


2 files changed, 32 insertions(+), 0 deletions(-)

lib/std/c/linux.zig+16
......@@ -371,3 +371,19 @@ pub const dirent64 = struct {
371371 d_type: u8,
372372 d_name: [256]u8,
373373};
374
375pub const MPOL = struct {
376 pub const F_NODE = 1 << 0;
377 pub const F_ADDR = 1 << 1;
378 pub const F_MEMS_ALLOWED = 1 << 2;
379 /// flags for SYS_mbind
380 pub const MF_STRICT = 1 << 0;
381 pub const MF_MOVE = 1 << 1;
382 pub const MF_MOVE_ALL = 1 << 2;
383 pub const MF_LAZY = 1 << 3;
384 pub const MF_INTERNAL = 1 << 4;
385 pub const MF_VALID = MPOL.MF_STRICT | MPOL.MF_MOVE | MPOL.MOVE_ALL;
386};
387
388pub extern "c" fn getcpu(cpu: *c_uint, node: *c_uint) c_int;
389pub extern "c" fn sched_getcpu() c_int;
lib/std/os/linux.zig+16
......@@ -1519,6 +1519,22 @@ pub fn sched_getaffinity(pid: pid_t, size: usize, set: *cpu_set_t) usize {
15191519 return 0;
15201520}
15211521
1522pub fn getcpu(cpu: *u32, node: *u32) usize {
1523 return syscall3(.getcpu, cpu, node, null);
1524}
1525
1526pub fn sched_getcpu() usize {
1527 var cpu: u32 = undefined;
1528 const rc = syscall3(.getcpu, &cpu, null, null);
1529 if (@bitCast(isize, rc) < 0) return rc;
1530 return @intCast(usize, cpu);
1531}
1532
1533/// libc has no wrapper for this syscall
1534pub fn mbind(addr: ?*anyopaque, len: u32, mode: i32, nodemask: *const u32, maxnode: u32, flags: u32) usize {
1535 return syscall6(.mbind, addr, len, mode, nodemask, maxnode, flags);
1536}
1537
15221538pub fn epoll_create() usize {
15231539 return epoll_create1(0);
15241540}