Add 0 to SIG enum

This commit is contained in:
psznm 2025-11-22 19:30:21 +01:00
parent 3f2cf1c002
commit 409cd5b45f
5 changed files with 43 additions and 0 deletions

View file

@ -2662,6 +2662,8 @@ pub const SIG = switch (native_os) {
pub const IOT: SIG = .ABRT;
pub const POLL: SIG = .EMT;
/// Invalid signal. Used in kill to perform checking without sending signal.
INVAL = 0,
/// hangup
HUP = 1,
/// interrupt
@ -2756,6 +2758,7 @@ pub const SIG = switch (native_os) {
pub const RTMIN = 65;
pub const RTMAX = 126;
INVAL = 0,
HUP = 1,
INT = 2,
QUIT = 3,
@ -2821,6 +2824,7 @@ pub const SIG = switch (native_os) {
pub const POLL: SIG = .IO;
INVAL = 0,
HUP = 1,
INT = 2,
QUIT = 3,
@ -2895,6 +2899,7 @@ pub const SIG = switch (native_os) {
pub const IOT: SIG = .ABRT;
INVAL = 0,
HUP = 1,
INT = 2,
QUIT = 3,
@ -2941,6 +2946,7 @@ pub const SIG = switch (native_os) {
pub const IOT: SIG = .ABRT;
INVAL = 0,
HUP = 1,
INT = 2,
QUIT = 3,
@ -2989,6 +2995,7 @@ pub const SIG = switch (native_os) {
pub const IOT: SIG = .ABRT;
INVAL = 0,
HUP = 1,
INT = 2,
QUIT = 3,
@ -3035,6 +3042,7 @@ pub const SIG = switch (native_os) {
pub const IOT: SIG = .ABRT;
INVAL = 0,
HUP = 1,
INT = 2,
QUIT = 3,

View file

@ -3741,6 +3741,8 @@ pub const SIG = if (is_mips) enum(u32) {
pub const IOT: SIG = .ABRT;
pub const POLL: SIG = .IO;
INVAL = 0,
// /arch/mips/include/uapi/asm/signal.h#L25
HUP = 1,
INT = 2,
@ -3787,6 +3789,8 @@ pub const SIG = if (is_mips) enum(u32) {
pub const PWR: SIG = .LOST;
pub const POLL: SIG = .IO;
/// Perform error checking without sending signal.
INVAL = 0,
HUP = 1,
INT = 2,
QUIT = 3,
@ -3830,6 +3834,8 @@ pub const SIG = if (is_mips) enum(u32) {
pub const POLL: SIG = .IO;
pub const IOT: SIG = .ABRT;
/// Perform error checking without sending signal.
INVAL = 0,
HUP = 1,
INT = 2,
QUIT = 3,

View file

@ -141,6 +141,8 @@ pub fn getpid() u32 {
return tos.pid;
}
pub const SIG = struct {
/// Invalid signal. Used in kill to perform checking without sending signal.
pub const INVAL = 0;
/// hangup
pub const HUP = 1;
/// interrupt

View file

@ -20,6 +20,9 @@ const cases = [_]Case{
.{
.src_path = "relpaths.zig",
},
.{
.src_path = "kill.zig",
},
};
pub fn build(b: *std.Build) void {

View file

@ -0,0 +1,24 @@
const std = @import("std");
const posix = std.posix;
const builtin = @import("builtin");
const native_os = builtin.target.os.tag;
pub fn main() !void {
try test_kill_zero_self_should_succeed();
try test_kill_nonexistent();
}
fn test_kill_nonexistent() !void {
if ((native_os != .linux) and (native_os != .macos)) return;
// Linux is limited by PID_MAX_LIMIT constant which is around 4 million
// MacOS maximum pid appears to be 99999 and not configurable.
// Others are unknown thus not tested.
const impossible_pid: posix.pid_t = 1_999_999_999;
try std.testing.expectError(posix.KillError.ProcessNotFound, posix.kill(impossible_pid, .INVAL));
}
fn test_kill_zero_self_should_succeed() !void {
// Windows does not have kill -0 equivalent
if (native_os == .windows) return;
try posix.kill(posix.getpid(), .INVAL);
}