On Tue, Aug 31, 2010 at 5:54 AM, erik quanstrom <quans...@quanstro.net> wrote:
>> A simple change:
>> pid = getpid();
>
> shouldn't you just fix it so _tos->pid is set?

yep. I just have to find the time.

>
> also, the comments in the new nsec.c don't
> match the code.  the code looks something like this
>
>        do{
>                ...
>                tries = 0;
>        }while(tries++ == 0);   /* retry once */
>
> of course either this should be
>
>        /* just retry for ever */
>        for(;;){
>                ...
>        }
> or
>        /* retry once */
>        for(tries = 0; tries < 2; tries++)
>
> also, there's nothing stoping the race between
> - two procs allocating the same element of the pid array
> - two procs opening the global fd twice



personal opinion: the difficulty of getting this code right, and its
complexity, tell me something is wrong with the interface. Look at the
trouble we're going through to get a 64-bit number out of the kernel.
Look at how hard it is to get right.

Two ways out:
1. "reserved" fds. an fd that is always open, can not be closed, and
will return important values, e.g. reserved fd 32766 could always be a
connection to bintime
2. a system call to get bintime.

others? Either way I don't see the current approach as making a lot of sense.

ron

Reply via email to