| ... | ... | @@ -6926,3 +6926,52 @@ pub fn perf_event_open( |
| 6926 | 6926 | else => |err| return unexpectedErrno(err), |
| 6927 | 6927 | } |
| 6928 | 6928 | } |
| 6929 | |
| 6930 | pub const TimerFdCreateError = error{ |
| 6931 | AccessDenied, |
| 6932 | ProcessFdQuotaExceeded, |
| 6933 | SystemFdQuotaExceeded, |
| 6934 | NoDevice, |
| 6935 | SystemResources, |
| 6936 | } || UnexpectedError; |
| 6937 | |
| 6938 | pub const TimerFdGetError = error{InvalidHandle} || UnexpectedError; |
| 6939 | pub const TimerFdSetError = TimerFdGetError || error{Canceled}; |
| 6940 | |
| 6941 | pub fn timerfd_create(clokid: i32, flags: u32) TimerFdCreateError!fd_t { |
| 6942 | var rc = linux.timerfd_create(clokid, flags); |
| 6943 | return switch (errno(rc)) { |
| 6944 | .SUCCESS => @intCast(fd_t, rc), |
| 6945 | .INVAL => unreachable, |
| 6946 | .MFILE => return error.ProcessFdQuotaExceeded, |
| 6947 | .NFILE => return error.SystemFdQuotaExceeded, |
| 6948 | .NODEV => return error.NoDevice, |
| 6949 | .NOMEM => return error.SystemResources, |
| 6950 | .PERM => return error.AccessDenied, |
| 6951 | else => |err| return unexpectedErrno(err), |
| 6952 | }; |
| 6953 | } |
| 6954 | |
| 6955 | pub fn timerfd_settime(fd: i32, flags: u32, new_value: *const linux.itimerspec, old_value: ?*linux.itimerspec) TimerFdSetError!void { |
| 6956 | var rc = linux.timerfd_settime(fd, flags, new_value, old_value); |
| 6957 | return switch (errno(rc)) { |
| 6958 | .SUCCESS => {}, |
| 6959 | .BADF => error.InvalidHandle, |
| 6960 | .FAULT => unreachable, |
| 6961 | .INVAL => unreachable, |
| 6962 | .CANCELED => error.Canceled, |
| 6963 | else => |err| return unexpectedErrno(err), |
| 6964 | }; |
| 6965 | } |
| 6966 | |
| 6967 | pub fn timerfd_gettime(fd: i32) TimerFdGetError!linux.itimerspec { |
| 6968 | var curr_value: linux.itimerspec = undefined; |
| 6969 | var rc = linux.timerfd_gettime(fd, &curr_value); |
| 6970 | return switch (errno(rc)) { |
| 6971 | .SUCCESS => return curr_value, |
| 6972 | .BADF => error.InvalidHandle, |
| 6973 | .FAULT => unreachable, |
| 6974 | .INVAL => unreachable, |
| 6975 | else => |err| return unexpectedErrno(err), |
| 6976 | }; |
| 6977 | } |