NetBSD-Docs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: filedesc(9) rewrite, please review



Hello!

> Sent: Monday, October 15, 2018 at 5:05 PM
> From: coypu%sdf.org@localhost
> To: netbsd-docs%netbsd.org@localhost
> Subject: filedesc(9) rewrite, please review

[...]

> Please review.

Be aware that I do not know the code, so this is definitely from a user-only
perspective. I hope it can be helpful anyway, as it does not always overlap
to the already received Robert Elz review.

Rocky


FILEDESC(9) review

Functions in `NAME' section seem to be listed in alphabetical order. Why not
not to keep the same criterion for the `SYNOPSIS' section, and inside the
two lists inside `FUNCTIONS'?

> The kernel maintains a descriptor table for each process which is used to

For each process, the kernel maintains a descriptor table, which is used to

> The file descriptor table maintains the following information:

The table maintains the following information:

>      the number of descriptors allocated in the file descriptor table;
>      approximate next free descriptor;
>      a reference count on the file descriptor table; and
>      an array of open file entries.

    - the number of descriptors allocated in the file descriptor table;
    - approximate next free descriptor;
    - a reference count on the file descriptor table; and
    - an array of open file entries.
(or whatever list notation the formatting language allows you to use)

> It is the responsibility of the file descriptor operations
> to expand the available number of entries if more are required.

The file descriptor operations are responsible to expand the available
number of entries if more are required.

> information necessary

information needed

> to access the underlying object and to maintain common information

I don't understand.

> purpose specific

Maybe purpose-specific is better?

> fd_alloc(p, want, *result)
> 	      Create a new open file entry and allocate a file descriptor
> 	      for the process p.  

Create a new open file entry in the file descriptor table and allocate a
file descriptor for the process p.

>             This operation is performed by invoking
> 	      fd_alloc() to allocate the new file descriptor.

Isn't this a repetition, or a trivial statement?!

> The fd_alloc() function returns zero on success, otherwise an
> appropriate error is returned.

The fd_alloc() function returns zero on success, or an appropriate error
value otherwise.

> Get the file entry for file descriptor fd The file entry is

Get the file entry for file descriptor fd. The file entry is

> If there is already an open file, close it (See dup2(2)).

(IIUC)
If it is related to an already open file, close it and then use the file
descriptor.

>      fd_dupopen(old, *newp, error)
>	      Duplicate file descriptor specified in old for the current
>             lwp.

IIUC, by LWP you are referring to Light-Weight Processes. Shouldn't be
necessary to specify what an LWP is (that is: give more context)?

>    The following functions operate on the file descriptor table for a
>    process.

Above, you were writing:

>     The following functions are high-level interface routines to access
>     the file descriptor table for a process and its file entries.

What is the difference between them?

>     fd_alloc(p, want, *result)
>	      Allocate a file descriptor want for process p.  The resultant
>	      file descriptor is returned in *result.  The fd_alloc()
>             function returns zero on success, otherwise an appropriate
>	      error is returned.

Is this the same function as the one above?! And which of the two
descriptions is the correct one?

>             It always returns the in-kernel errno value
>	      EMOVEFD, which is meant to be returned from the device open
>	      routine.	This special return value is interpreted by the
> 	      caller of the device open routine.

It always returns the in-kernel errno EMOVEFD. This special value is meant
to be returned from the device open routine; it is interpreted by the caller
of the device open routine.

>  fd_checkstd(l)
>	      Check the standard file descriptors 0, 1, and 2 and ensure
>	      they are referencing valid file descriptors. 

Maybe are you meaning `ensure they are referencing valid files', or `ensure
they are valid'?

>             This operation is necessary as these
>	      file descriptors are given implicit significance in the
>             Standard C Library and it is unsafe for setuid(2) and
>             setgid(2) processes to be started with these file descriptors
> 	      closed.

I don't understand.

> A failed operation will return a non-zero return value.

A failed operation will return a non-zero value.


Home | Main Index | Thread Index | Old Index