Opened 3 years ago

Closed 3 years ago

#4548 closed task (fixed)


Reported by: Bruce Dubbs Owned by: lfs-book
Priority: normal Milestone: 9.1
Component: Book Version: SVN
Severity: normal Keywords:


New minor version.

Change History (2)

comment:1 by Bruce Dubbs, 3 years ago

Released: 2019-11-19, Munich

Newly documented interfaces in existing pages

  Document clone3()

  Add P_PIDFD for waiting on a child referred to by a PID file descriptor

  Refresh against kernel v5.4-rc7

New and changed links

  New link to clone(2)

Changes to individual pages
        Rename arguments for consistency with clone3()
            Make the names of the clone() arguments the same as the fields
            in the clone3() 'args' struct:

                ctid        ==> child_pid
                ptid        ==> parent_tid
                newtls      ==> tld
                child_stack ==> stack

        Consistently order paragraphs for CLONE_NEW* flags
            Sometimes the descriptions of these flags mentioned the
            corresponding section 7 namespace manual page and then the
            required capabilities, and sometimes the order was the was
            the reverse. Make it consistent.

        EXAMPLE: Allocate child's stack using mmap(2) rather than malloc(3)
            Christian Brauner suggested mmap(MAP_STACK), rather than
            malloc(), as the canonical way of allocating a stack for the
            child of clone(), and Jann Horn noted some reasons why
            (MAP_STACK exists elsewhere, and mmap() returns a page-aligned
            block of memory, which is useful if we want to set up a guard
            page at the end of the stack).

        Tidy up the description of CLONE_DETACHED
            The obsolete CLONE_DETACHED flag has never been properly
            documented, but now the discussion CLONE_PIDFD also requires
            mention of CLONE_DETACHED. So, properly document CLONE_DETACHED,
            and mention its interactions with CLONE_PIDFD.

        Give the introductory paragraph a new coat of paint
            Change the text in the introductory paragraph (which was written
            20 years ago) to reflect the fact that clone*() does more things

        Remove wording that suggests CLONE_NEW* flags are for containers
            These flags are used for implementing many other interesting
            things by now.

        Remove various details that are already covered in namespaces pages
            Remove details of UTS, IPC, and network namespaces that are
            already covered in the corresponding namespaces pages in section 7.

        Adjust references to namespaces(7)
            Adjust references to namespaces(7) to be references to pages
            describing specific namespace types.
        Add gfs2 to the list of punch hole-capable filesystems

        Emphasize that FS_IOC_GETFLAGS and FS_IOC_SETFLAGS argument is 'int *'

        Add reference to ioctl(2) SEE ALSO section
            The referenced section lists various pages that document ioctls.

        Note that MAP_STACK exists on some other systems
        Some rewording of the description of MAP_STACK
            Reword a little to allow for the fact that there are now
            *two* reasons to consider using this flag.

        Note the waitid() use case for PID file descriptors
        Add a subsection header "Use cases for PID file descriptors"
        Make it a little more explicit the CLONE_PIDFD returns a PID FD

        EXAMPLE: allocate stack using mmap() MAP_STACK rather than malloc()

        Add some details about Q_QUOTAON

        Switch to "considerate language"

        POLLIN_SET/POLLOUT_SET/POLLEX_SET are now defined in terms of EPOLL*
            Since kernel commit a9a08845e9acbd224e4ee466f5c1275ed50054e8, the
            equivalence between select() and poll()/epoll is defined in terms
            of the EPOLL* constants, rather than the POLL* constants.

        waitid() can be used to wait on children in same process group as caller
            Since Linux 5.4, idtype == P_PGID && id == 0 can be used to wait
            on children in same process group as caller.
        Clarify semantics of waitpid(0, ...)
            As noted in kernel commit 821cc7b0b205c0df64cce59aacc330af251fa8f7,
            threads create an ambiguity: what if the calling process's PGID
            is changed by another thread while waitpid(0, ...) is blocked?
            So, clarify that waitpid(0, ...) means wait for children whose
            PGID matches the caller's PGID at the time of the call to

        Clarify that AT_BASE_PLATFORM and AT_EXECFN return pointers to strings

        Attempt clarify domain/search interaction
            The domain directive is historic at this point; it should not
            be used.

        Small wording fix in description of SIOCGIFCONF
            SIOCGIFCONF returns "network layer" addresses (not "transport

        Add a little more detail on scope of UTS namespaces

comment:2 by Bruce Dubbs, 3 years ago

Resolution: fixed
Status: newclosed

Fixed at revision 11702.

Note: See TracTickets for help on using tickets.