tech-kern archive

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

Idea for *at system calls



        Hello,

I had an idea how to implement the *at system calls in a less nasty way.
We invent to new system calls:

        int push_thread_cwd(int filedes);
        int pop_thread_cwd();

With those system calls openat() could be implemented like this
(the "mode" bit isn't correct, but you might get the idea):

int
openat(int filedes, const char *path, int oflag, mode_t mode)
{
        int error, newfildes;

        error = push_thread_cwd(filedes);
        if (error != 0) {
                errno = error;
                return -1;
        }

        newfiledes = open(path, oflag, mode);

        assert(pop_thread_cwd() == 0);

        return newfiledes;
}

This way we would only need two new system calls.

        Kind regards

-- 
Matthias Scheler                                  http://zhadum.org.uk/


Home | Main Index | Thread Index | Old Index