Skip to content

[libc][docgen] support non-top-level headers #119621

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Dec 12, 2024

Conversation

nickdesaulniers
Copy link
Member

@nickdesaulniers nickdesaulniers commented Dec 11, 2024

such as arpa/inet, sys/*

@llvmbot llvmbot added the libc label Dec 11, 2024
@llvmbot
Copy link
Member

llvmbot commented Dec 11, 2024

@llvm/pr-subscribers-libc

Author: Nick Desaulniers (nickdesaulniers)

Changes

such as arpa/inet, sys/*


Full diff: https://github.com/llvm/llvm-project/pull/119621.diff

6 Files Affected:

  • (added) libc/docs/headers/arpa/inet.rst (+50)
  • (modified) libc/docs/headers/index.rst (+2)
  • (added) libc/docs/headers/sys/mman.rst (+179)
  • (added) libc/utils/docgen/arpa/inet.json (+28)
  • (modified) libc/utils/docgen/docgen.py (+20-4)
  • (added) libc/utils/docgen/sys/mman.json (+43)
diff --git a/libc/docs/headers/arpa/inet.rst b/libc/docs/headers/arpa/inet.rst
new file mode 100644
index 00000000000000..c82ca5427fbbb7
--- /dev/null
+++ b/libc/docs/headers/arpa/inet.rst
@@ -0,0 +1,50 @@
+.. include:: ../../check.rst
+
+===========
+arpa/inet.h
+===========
+
+Functions
+=========
+
+.. list-table::
+  :widths: auto
+  :align: center
+  :header-rows: 1
+
+  * - Function
+    - Implemented
+    - C23 Standard Section
+    - POSIX.1-2024 Standard Section
+  * - htonl
+    - |check|
+    -
+    - 
+  * - htons
+    - |check|
+    -
+    - 
+  * - inet_addr
+    -
+    -
+    - 
+  * - inet_ntoa
+    -
+    -
+    - 
+  * - inet_ntop
+    -
+    -
+    - 
+  * - inet_pton
+    -
+    -
+    - 
+  * - ntohl
+    - |check|
+    -
+    - 
+  * - ntohs
+    - |check|
+    -
+    - 
diff --git a/libc/docs/headers/index.rst b/libc/docs/headers/index.rst
index 9bd6396843e786..07ab6dd9b26742 100644
--- a/libc/docs/headers/index.rst
+++ b/libc/docs/headers/index.rst
@@ -4,6 +4,7 @@ Implementation Status
 .. toctree::
    :maxdepth: 1
 
+   arpa/inet
    assert
    complex
    ctype
@@ -21,6 +22,7 @@ Implementation Status
    stdlib
    string
    strings
+   sys/mman
    threads
    time
    uchar
diff --git a/libc/docs/headers/sys/mman.rst b/libc/docs/headers/sys/mman.rst
new file mode 100644
index 00000000000000..62a7b68e823582
--- /dev/null
+++ b/libc/docs/headers/sys/mman.rst
@@ -0,0 +1,179 @@
+.. include:: ../../check.rst
+
+==========
+sys/mman.h
+==========
+
+Macros
+======
+
+.. list-table::
+  :widths: auto
+  :align: center
+  :header-rows: 1
+
+  * - Macro
+    - Implemented
+    - C23 Standard Section
+    - POSIX.1-2024 Standard Section
+  * - MAP_ANON
+    -
+    -
+    - 
+  * - MAP_ANONYMOUS
+    -
+    -
+    - 
+  * - MAP_FAILED
+    -
+    -
+    - 
+  * - MAP_FIXED
+    -
+    -
+    - 
+  * - MAP_PRIVATE
+    -
+    -
+    - 
+  * - MAP_SHARED
+    -
+    -
+    - 
+  * - MCL_CURRENT
+    -
+    -
+    - 
+  * - MCL_FUTURE
+    -
+    -
+    - 
+  * - MS_ASYNC
+    -
+    -
+    - 
+  * - MS_INVALIDATE
+    -
+    -
+    - 
+  * - MS_SYNC
+    -
+    -
+    - 
+  * - POSIX_MADV_DONTNEED
+    -
+    -
+    - 
+  * - POSIX_MADV_NORMAL
+    -
+    -
+    - 
+  * - POSIX_MADV_RANDOM
+    -
+    -
+    - 
+  * - POSIX_MADV_SEQUENTIAL
+    -
+    -
+    - 
+  * - POSIX_MADV_WILLNEED
+    -
+    -
+    - 
+  * - POSIX_TYPED_MEM_ALLOCATE
+    -
+    -
+    - 
+  * - POSIX_TYPED_MEM_ALLOCATE_CONTIG
+    -
+    -
+    - 
+  * - POSIX_TYPED_MEM_MAP_ALLOCATABLE
+    -
+    -
+    - 
+  * - PROT_EXEC
+    -
+    -
+    - 
+  * - PROT_NONE
+    -
+    -
+    - 
+  * - PROT_READ
+    -
+    -
+    - 
+  * - PROT_WRITE
+    -
+    -
+    - 
+
+Functions
+=========
+
+.. list-table::
+  :widths: auto
+  :align: center
+  :header-rows: 1
+
+  * - Function
+    - Implemented
+    - C23 Standard Section
+    - POSIX.1-2024 Standard Section
+  * - mlock
+    - |check|
+    -
+    - 
+  * - mlockall
+    - |check|
+    -
+    - 
+  * - mmap
+    - |check|
+    -
+    - 
+  * - mprotect
+    - |check|
+    -
+    - 
+  * - msync
+    - |check|
+    -
+    - 
+  * - munlock
+    - |check|
+    -
+    - 
+  * - munlockall
+    - |check|
+    -
+    - 
+  * - munmap
+    - |check|
+    -
+    - 
+  * - posix_madvise
+    - |check|
+    -
+    - 
+  * - posix_mem_offset
+    -
+    -
+    - 
+  * - posix_typed_mem_get_info
+    -
+    -
+    - 
+  * - posix_typed_mem_open
+    -
+    -
+    - 
+  * - shm_open
+    - |check|
+    -
+    - 
+  * - shm_unlink
+    - |check|
+    -
+    - 
diff --git a/libc/utils/docgen/arpa/inet.json b/libc/utils/docgen/arpa/inet.json
new file mode 100644
index 00000000000000..0e788c57d5f7ae
--- /dev/null
+++ b/libc/utils/docgen/arpa/inet.json
@@ -0,0 +1,28 @@
+{
+  "functions": {
+    "htonl" : {
+      "posix-definition": ""
+    },
+    "htons": {
+      "posix-definition": ""
+    },
+    "ntohl": {
+      "posix-definition": ""
+    },
+    "ntohs": {
+      "posix-definition": ""
+    },
+    "inet_addr": {
+      "posix-definition": ""
+    },
+    "inet_ntoa": {
+      "posix-definition": ""
+    },
+    "inet_ntop": {
+      "posix-definition": ""
+    },
+    "inet_pton": {
+      "posix-definition": ""
+    }
+  }
+}
diff --git a/libc/utils/docgen/docgen.py b/libc/utils/docgen/docgen.py
index aa30a6e51ef870..3bff93be708109 100755
--- a/libc/utils/docgen/docgen.py
+++ b/libc/utils/docgen/docgen.py
@@ -10,8 +10,9 @@
 from argparse import ArgumentParser, Namespace
 from pathlib import Path
 from typing import Dict
-import sys
 import json
+import os
+import sys
 
 from header import Header
 
@@ -161,7 +162,10 @@ def print_macros_rst(header: Header, macros: Dict):
 
 
 def print_impl_status_rst(header: Header, api: Dict):
-    print(".. include:: ../check.rst\n")
+    if (os.sep in header.name):
+        print(".. include:: ../../check.rst\n")
+    else:
+        print(".. include:: ../check.rst\n")
 
     print("=" * len(header.name))
     print(header.name)
@@ -176,10 +180,22 @@ def print_impl_status_rst(header: Header, api: Dict):
         print_functions_rst(header, api["functions"])
 
 
+# This code implicitly relies on docgen.py being in the same dir as the json
+# files and is likely to need to be fixed when re-integrating docgen into
+# hdrgen.
+def get_choices():
+    choices = []
+    for path in Path(__file__).parent.rglob("*.json"):
+        fname = path.with_suffix(".h").name
+        if path.parent != Path(__file__).parent:
+            fname = path.parent.name + os.sep + fname
+        choices.append(fname)
+    return choices
+
+
 def parse_args() -> Namespace:
     parser = ArgumentParser()
-    choices = [p.with_suffix(".h").name for p in Path(__file__).parent.glob("*.json")]
-    parser.add_argument("header_name", choices=choices)
+    parser.add_argument("header_name", choices=get_choices())
     return parser.parse_args()
 
 
diff --git a/libc/utils/docgen/sys/mman.json b/libc/utils/docgen/sys/mman.json
new file mode 100644
index 00000000000000..59f904fcfea975
--- /dev/null
+++ b/libc/utils/docgen/sys/mman.json
@@ -0,0 +1,43 @@
+{
+  "macros": {
+    "PROT_EXEC": { "posix-definition": "" },
+    "PROT_NONE": { "posix-definition": "" },
+    "PROT_READ": { "posix-definition": "" },
+    "PROT_WRITE": { "posix-definition": "" },
+    "MAP_ANON": { "posix-definition": "" },
+    "MAP_ANONYMOUS": { "posix-definition": "" },
+    "MAP_FIXED": { "posix-definition": "" },
+    "MAP_PRIVATE": { "posix-definition": "" },
+    "MAP_SHARED": { "posix-definition": "" },
+    "MS_ASYNC": { "posix-definition": "" },
+    "MS_INVALIDATE": { "posix-definition": "" },
+    "MS_SYNC": { "posix-definition": "" },
+    "MCL_CURRENT": { "posix-definition": "" },
+    "MCL_FUTURE": { "posix-definition": "" },
+    "MAP_FAILED": { "posix-definition": "" },
+    "POSIX_MADV_DONTNEED": { "posix-definition": "" },
+    "POSIX_MADV_NORMAL": { "posix-definition": "" },
+    "POSIX_MADV_RANDOM": { "posix-definition": "" },
+    "POSIX_MADV_SEQUENTIAL": { "posix-definition": "" },
+    "POSIX_MADV_WILLNEED": { "posix-definition": "" },
+    "POSIX_TYPED_MEM_ALLOCATE": { "posix-definition": "" },
+    "POSIX_TYPED_MEM_ALLOCATE_CONTIG": { "posix-definition": "" },
+    "POSIX_TYPED_MEM_MAP_ALLOCATABLE": { "posix-definition": "" }
+  },
+  "functions": {
+    "mlock": { "posix-definition": "" },
+    "mlockall": { "posix-definition": "" },
+    "mmap": { "posix-definition": "" },
+    "mprotect": { "posix-definition": "" },
+    "msync": { "posix-definition": "" },
+    "munlock": { "posix-definition": "" },
+    "munlockall": { "posix-definition": "" },
+    "munmap": { "posix-definition": "" },
+    "posix_madvise": { "posix-definition": "" },
+    "posix_mem_offset": { "posix-definition": "" },
+    "posix_typed_mem_get_info": { "posix-definition": "" },
+    "posix_typed_mem_open": { "posix-definition": "" },
+    "shm_open": { "posix-definition": "" },
+    "shm_unlink": { "posix-definition": "" }
+  }
+}

Copy link

github-actions bot commented Dec 11, 2024

✅ With the latest revision this PR passed the Python code formatter.

@nickdesaulniers nickdesaulniers changed the title [libc][docgen] basic support for non-top-level headers [libc][docgen] support non-top-level headers Dec 11, 2024
@nickdesaulniers nickdesaulniers merged commit e17d2b5 into llvm:main Dec 12, 2024
12 checks passed
@nickdesaulniers nickdesaulniers deleted the docs_subdirs branch December 12, 2024 17:21
# This code implicitly relies on docgen.py being in the same dir as the json
# files and is likely to need to be fixed when re-integrating docgen into
# hdrgen.
def get_choices() -> List:
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Traceback (most recent call last):
  File "/android0/llvm-project/./libc/utils/docgen/docgen.py", line 186, in <module>
    def get_choices() -> List:
                         ^^^^
NameError: name 'List' is not defined. Did you mean: 'list'?

sigh...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nickdesaulniers added a commit that referenced this pull request Dec 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants