Subversion Repositories shark

Rev

Blame | Last modification | View Log | RSS feed

#ifndef _LINUX_COMPAT_H
#define _LINUX_COMPAT_H
/*
 * These are the type definitions for the architecture specific
 * syscall compatibility layer.
 */

#include <linux/config.h>

#ifdef CONFIG_COMPAT

#include <linux/stat.h>
#include <linux/param.h>        /* for HZ */
#include <asm/compat.h>

#define compat_jiffies_to_clock_t(x)    \
                (((unsigned long)(x) * COMPAT_USER_HZ) / HZ)


struct compat_itimerspec {
        struct compat_timespec it_interval;
        struct compat_timespec it_value;
};

struct compat_utimbuf {
        compat_time_t           actime;
        compat_time_t           modtime;
};

struct compat_itimerval {
        struct compat_timeval   it_interval;
        struct compat_timeval   it_value;
};

struct compat_tms {
        compat_clock_t          tms_utime;
        compat_clock_t          tms_stime;
        compat_clock_t          tms_cutime;
        compat_clock_t          tms_cstime;
};

#define _COMPAT_NSIG_WORDS      (_COMPAT_NSIG / _COMPAT_NSIG_BPW)

typedef struct {
        compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
} compat_sigset_t;

extern int cp_compat_stat(struct kstat *, struct compat_stat *);
extern int get_compat_timespec(struct timespec *, struct compat_timespec *);
extern int put_compat_timespec(struct timespec *, struct compat_timespec *);

struct compat_iovec {
        compat_uptr_t   iov_base;
        compat_size_t   iov_len;
};

struct compat_rlimit {
        compat_ulong_t  rlim_cur;
        compat_ulong_t  rlim_max;
};

struct compat_rusage {
        struct compat_timeval ru_utime;
        struct compat_timeval ru_stime;
        compat_long_t   ru_maxrss;
        compat_long_t   ru_ixrss;
        compat_long_t   ru_idrss;
        compat_long_t   ru_isrss;
        compat_long_t   ru_minflt;
        compat_long_t   ru_majflt;
        compat_long_t   ru_nswap;
        compat_long_t   ru_inblock;
        compat_long_t   ru_oublock;
        compat_long_t   ru_msgsnd;
        compat_long_t   ru_msgrcv;
        compat_long_t   ru_nsignals;
        compat_long_t   ru_nvcsw;
        compat_long_t   ru_nivcsw;
};

struct compat_statfs64 {
        __u32 f_type;
        __u32 f_bsize;
        __u64 f_blocks;
        __u64 f_bfree;
        __u64 f_bavail;
        __u64 f_files;
        __u64 f_ffree;
        __kernel_fsid_t f_fsid;
        __u32 f_namelen;
        __u32 f_frsize;
        __u32 f_spare[5];
};

struct compat_dirent {
        u32             d_ino;
        compat_off_t    d_off;
        u16             d_reclen;
        char            d_name[256];
};

#endif /* CONFIG_COMPAT */
#endif /* _LINUX_COMPAT_H */