tech-kern archive

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

Re: Adding linux_link(2) system call, second round



On Mon 01 Aug 2011 at 12:09:34 +0200, Joerg Sonnenberger wrote:
> You are adding a lot of complexity to workaround portability issues of a
> single application. Let's start the other way -- has FreeBSD added
> llink(2)? What about OSX? Solaris?

FreeBSD 8 has ln -P. From the manual, it seems that the system call used
for it must be linkat(2), which has an added flags argument. (A check
with ktrace confirms that)

From FreeBSD 8.2's link(2):

SYNOPSIS
     #include <unistd.h>

     int
     link(const char *name1, const char *name2);

     int
     linkat(int fd1, const char *name1, int fd2, const char *name2, int flag);

...
     The linkat() system call is equivalent to link except in the case where
     either name1 or name2 or both are relative paths.  In this case a rela-
     tive path name1 is interpreted relative to the directory associated with
     the file descriptor fd1 instead of the current working directory and sim-
     ilarly for name2 and the file descriptor fd2.

     Values for flag are constructed by a bitwise-inclusive OR of flags from
     the following list, defined in <fcntl.h>:

     AT_SYMLINK_FOLLOW
             If name1 names a symbolic link, a new link for the target of the
             symbolic link is created.

http://www.freebsd.org/cgi/man.cgi?query=link&apropos=0&sektion=2&manpath=FreeBSD+8.2-RELEASE&format=html

> Joerg
-Olaf.
-- 
___ Olaf 'Rhialto' Seibert  -- There's no point being grown-up if you 
\X/ rhialto/at/xs4all.nl    -- can't be childish sometimes. -The 4th Doctor


Home | Main Index | Thread Index | Old Index