Exemplo n.º 1
0
Arquivo: pioctl.c Projeto: hwr/openafs
int
lpioctl(char *path, int cmd, void *cmarg, int follow)
{
    int errcode = 0;
    int rval;

    rval = proc_afs_syscall(AFSCALL_PIOCTL, (long)path, cmd, (long)cmarg,
			    follow, &errcode);

    if(rval)
	errcode = syscall(AFS_SYSCALL, AFSCALL_PIOCTL, path, cmd, cmarg,
			  follow);

    return (errcode);
}
Exemplo n.º 2
0
int
lpioctl(char *path, int cmd, void *cmarg, int follow)
{
    int errcode, rval;
#ifndef AFS_LINUX20_ENV
    /* As kauth/user.c says, handle smoothly the case where no AFS system call
     * exists (yet). */
    void (*old)(int) = signal(SIGSYS, SIG_IGN);
#endif

#if defined(AFS_LINUX20_ENV)
    rval = proc_afs_syscall(AFSCALL_PIOCTL, (long)path, cmd, (long)cmarg,
			    follow, &errcode);

    if(rval)
	errcode = syscall(AFS_SYSCALL, AFSCALL_PIOCTL, path, cmd, cmarg,
			  follow);
#elif defined(AFS_DARWIN80_ENV)
    rval = ioctl_afs_syscall(AFSCALL_PIOCTL, (long)path, cmd, (long)cmarg,
			     follow, 0, 0, &errcode);
    if (rval)
	errcode = rval;
#elif defined(AFS_SUN511_ENV)
    rval = ioctl_sun_afs_syscall(AFSCALL_PIOCTL, (uintptr_t)path, cmd,
                                 (uintptr_t)cmarg, follow, 0, 0, &errcode);
    if (rval) {
	errcode = rval;
    }
#else
    errcode = syscall(AFS_SYSCALL, AFSCALL_PIOCTL, path, cmd, cmarg, follow);
#endif

#ifndef AFS_LINUX20_ENV
    signal(SIGSYS, old);
#endif

    return (errcode);
}