diff --git a/libc/docs/index.rst b/libc/docs/index.rst index 8470c8d9287c2..11d5ae197d718 100644 --- a/libc/docs/index.rst +++ b/libc/docs/index.rst @@ -70,6 +70,7 @@ stages there is no ABI stability in any form. libc_search c23 ctype + signal .. toctree:: :hidden: diff --git a/libc/docs/signal.rst b/libc/docs/signal.rst new file mode 100644 index 0000000000000..7903bb439cb33 --- /dev/null +++ b/libc/docs/signal.rst @@ -0,0 +1,43 @@ +.. include:: check.rst + +signal.h Functions +================== + +.. list-table:: + :widths: auto + :align: center + :header-rows: 1 + + * - Function + - Implemented + - Standard + * - kill + - |check| + - + * - raise + - |check| + - 7.14.2.1 + * - sigaction + - |check| + - + * - sigaddset + - |check| + - + * - sigaltstack + - |check| + - + * - sigdelset + - |check| + - + * - sigemptyset + - |check| + - + * - sigfillset + - |check| + - + * - signal + - |check| + - 7.14.1.1 + * - sigprocmask + - |check| + - diff --git a/libc/utils/docgen/docgen.py b/libc/utils/docgen/docgen.py index 7411b4506f082..36eb409421b4f 100755 --- a/libc/utils/docgen/docgen.py +++ b/libc/utils/docgen/docgen.py @@ -23,12 +23,17 @@ def load_api(hname: str) -> Dict: # TODO: we may need to get more sophisticated for less generic implementations. # Does libc/src/{hname minus .h suffix}/{fname}.cpp exist? def is_implemented(hname: str, fname: str) -> bool: - return Path( + path = Path( Path(__file__).parent.parent.parent, "src", - hname.rstrip(".h"), - fname + ".cpp", - ).exists() + hname.rstrip(".h") + ) + # Recursively search for the target source file in the subdirectories under + # libc/src/{hname}. + for _ in path.glob("**/" + fname + ".cpp"): + return True + + return False def print_functions(header: str, functions: Dict): diff --git a/libc/utils/docgen/signal.json b/libc/utils/docgen/signal.json new file mode 100644 index 0000000000000..976021a803a67 --- /dev/null +++ b/libc/utils/docgen/signal.json @@ -0,0 +1,29 @@ +{ + "macros": [ + "SIG_DFL", + "SIG_ERR", + "SIG_IGN", + "SIGABRT", + "SIGFPE", + "SIGILL", + "SIGINT", + "SIGSEGV", + "SIGTERM" + ], + "functions": { + "kill": null, + "sigaction": null, + "sigaddset": null, + "sigaltstack": null, + "sigdelset": null, + "sigemptyset": null, + "sigfillset": null, + "sigprocmask": null, + "signal": { + "defined": "7.14.1.1" + }, + "raise": { + "defined": "7.14.2.1" + } + } +}