linux/include/linux/compat.h
<<
>>
Prefs
   1#ifndef _LINUX_COMPAT_H
   2#define _LINUX_COMPAT_H
   3/*
   4 * These are the type definitions for the architecture specific
   5 * syscall compatibility layer.
   6 */
   7
   8#ifdef CONFIG_COMPAT
   9
  10#include <linux/stat.h>
  11#include <linux/param.h>        /* for HZ */
  12#include <linux/sem.h>
  13#include <linux/socket.h>
  14#include <linux/if.h>
  15#include <linux/fs.h>
  16#include <linux/aio_abi.h>      /* for aio_context_t */
  17
  18#include <asm/compat.h>
  19#include <asm/siginfo.h>
  20#include <asm/signal.h>
  21
  22#define compat_jiffies_to_clock_t(x)    \
  23                (((unsigned long)(x) * COMPAT_USER_HZ) / HZ)
  24
  25typedef __compat_uid32_t        compat_uid_t;
  26typedef __compat_gid32_t        compat_gid_t;
  27
  28struct compat_sel_arg_struct;
  29struct rusage;
  30
  31struct compat_itimerspec {
  32        struct compat_timespec it_interval;
  33        struct compat_timespec it_value;
  34};
  35
  36struct compat_utimbuf {
  37        compat_time_t           actime;
  38        compat_time_t           modtime;
  39};
  40
  41struct compat_itimerval {
  42        struct compat_timeval   it_interval;
  43        struct compat_timeval   it_value;
  44};
  45
  46struct compat_tms {
  47        compat_clock_t          tms_utime;
  48        compat_clock_t          tms_stime;
  49        compat_clock_t          tms_cutime;
  50        compat_clock_t          tms_cstime;
  51};
  52
  53struct compat_timex {
  54        compat_uint_t modes;
  55        compat_long_t offset;
  56        compat_long_t freq;
  57        compat_long_t maxerror;
  58        compat_long_t esterror;
  59        compat_int_t status;
  60        compat_long_t constant;
  61        compat_long_t precision;
  62        compat_long_t tolerance;
  63        struct compat_timeval time;
  64        compat_long_t tick;
  65        compat_long_t ppsfreq;
  66        compat_long_t jitter;
  67        compat_int_t shift;
  68        compat_long_t stabil;
  69        compat_long_t jitcnt;
  70        compat_long_t calcnt;
  71        compat_long_t errcnt;
  72        compat_long_t stbcnt;
  73        compat_int_t tai;
  74
  75        compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
  76        compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
  77        compat_int_t:32; compat_int_t:32; compat_int_t:32;
  78};
  79
  80#define _COMPAT_NSIG_WORDS      (_COMPAT_NSIG / _COMPAT_NSIG_BPW)
  81
  82typedef struct {
  83        compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
  84} compat_sigset_t;
  85
  86extern int get_compat_timespec(struct timespec *,
  87                               const struct compat_timespec __user *);
  88extern int put_compat_timespec(const struct timespec *,
  89                               struct compat_timespec __user *);
  90
  91struct compat_iovec {
  92        compat_uptr_t   iov_base;
  93        compat_size_t   iov_len;
  94};
  95
  96struct compat_rlimit {
  97        compat_ulong_t  rlim_cur;
  98        compat_ulong_t  rlim_max;
  99};
 100
 101struct compat_rusage {
 102        struct compat_timeval ru_utime;
 103        struct compat_timeval ru_stime;
 104        compat_long_t   ru_maxrss;
 105        compat_long_t   ru_ixrss;
 106        compat_long_t   ru_idrss;
 107        compat_long_t   ru_isrss;
 108        compat_long_t   ru_minflt;
 109        compat_long_t   ru_majflt;
 110        compat_long_t   ru_nswap;
 111        compat_long_t   ru_inblock;
 112        compat_long_t   ru_oublock;
 113        compat_long_t   ru_msgsnd;
 114        compat_long_t   ru_msgrcv;
 115        compat_long_t   ru_nsignals;
 116        compat_long_t   ru_nvcsw;
 117        compat_long_t   ru_nivcsw;
 118};
 119
 120extern int put_compat_rusage(const struct rusage *,
 121                             struct compat_rusage __user *);
 122
 123struct compat_siginfo;
 124
 125extern asmlinkage long compat_sys_waitid(int, compat_pid_t,
 126                struct compat_siginfo __user *, int,
 127                struct compat_rusage __user *);
 128
 129struct compat_dirent {
 130        u32             d_ino;
 131        compat_off_t    d_off;
 132        u16             d_reclen;
 133        char            d_name[256];
 134};
 135
 136struct compat_ustat {
 137        compat_daddr_t          f_tfree;
 138        compat_ino_t            f_tinode;
 139        char                    f_fname[6];
 140        char                    f_fpack[6];
 141};
 142
 143typedef union compat_sigval {
 144        compat_int_t    sival_int;
 145        compat_uptr_t   sival_ptr;
 146} compat_sigval_t;
 147
 148#define COMPAT_SIGEV_PAD_SIZE   ((SIGEV_MAX_SIZE/sizeof(int)) - 3)
 149
 150typedef struct compat_sigevent {
 151        compat_sigval_t sigev_value;
 152        compat_int_t sigev_signo;
 153        compat_int_t sigev_notify;
 154        union {
 155                compat_int_t _pad[COMPAT_SIGEV_PAD_SIZE];
 156                compat_int_t _tid;
 157
 158                struct {
 159                        compat_uptr_t _function;
 160                        compat_uptr_t _attribute;
 161                } _sigev_thread;
 162        } _sigev_un;
 163} compat_sigevent_t;
 164
 165struct compat_ifmap {
 166        compat_ulong_t mem_start;
 167        compat_ulong_t mem_end;
 168        unsigned short base_addr;
 169        unsigned char irq;
 170        unsigned char dma;
 171        unsigned char port;
 172};
 173
 174struct compat_if_settings {
 175        unsigned int type;      /* Type of physical device or protocol */
 176        unsigned int size;      /* Size of the data allocated by the caller */
 177        compat_uptr_t ifs_ifsu; /* union of pointers */
 178};
 179
 180struct compat_ifreq {
 181        union {
 182                char    ifrn_name[IFNAMSIZ];    /* if name, e.g. "en0" */
 183        } ifr_ifrn;
 184        union {
 185                struct  sockaddr ifru_addr;
 186                struct  sockaddr ifru_dstaddr;
 187                struct  sockaddr ifru_broadaddr;
 188                struct  sockaddr ifru_netmask;
 189                struct  sockaddr ifru_hwaddr;
 190                short   ifru_flags;
 191                compat_int_t    ifru_ivalue;
 192                compat_int_t    ifru_mtu;
 193                struct  compat_ifmap ifru_map;
 194                char    ifru_slave[IFNAMSIZ];   /* Just fits the size */
 195                char    ifru_newname[IFNAMSIZ];
 196                compat_caddr_t  ifru_data;
 197                struct  compat_if_settings ifru_settings;
 198        } ifr_ifru;
 199};
 200
 201struct compat_ifconf {
 202        compat_int_t    ifc_len;                /* size of buffer */
 203        compat_caddr_t  ifcbuf;
 204};
 205
 206struct compat_robust_list {
 207        compat_uptr_t                   next;
 208};
 209
 210struct compat_robust_list_head {
 211        struct compat_robust_list       list;
 212        compat_long_t                   futex_offset;
 213        compat_uptr_t                   list_op_pending;
 214};
 215
 216struct compat_statfs;
 217struct compat_statfs64;
 218struct compat_old_linux_dirent;
 219struct compat_linux_dirent;
 220struct linux_dirent64;
 221struct compat_msghdr;
 222struct compat_mmsghdr;
 223struct compat_sysinfo;
 224struct compat_sysctl_args;
 225struct compat_kexec_segment;
 226struct compat_mq_attr;
 227
 228extern void compat_exit_robust_list(struct task_struct *curr);
 229
 230asmlinkage long
 231compat_sys_set_robust_list(struct compat_robust_list_head __user *head,
 232                           compat_size_t len);
 233asmlinkage long
 234compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr,
 235                           compat_size_t __user *len_ptr);
 236
 237long compat_sys_semctl(int first, int second, int third, void __user *uptr);
 238long compat_sys_msgsnd(int first, int second, int third, void __user *uptr);
 239long compat_sys_msgrcv(int first, int second, int msgtyp, int third,
 240                int version, void __user *uptr);
 241long compat_sys_msgctl(int first, int second, void __user *uptr);
 242long compat_sys_shmat(int first, int second, compat_uptr_t third, int version,
 243                void __user *uptr);
 244long compat_sys_shmctl(int first, int second, void __user *uptr);
 245long compat_sys_semtimedop(int semid, struct sembuf __user *tsems,
 246                unsigned nsems, const struct compat_timespec __user *timeout);
 247asmlinkage long compat_sys_keyctl(u32 option,
 248                              u32 arg2, u32 arg3, u32 arg4, u32 arg5);
 249asmlinkage long compat_sys_ustat(unsigned dev, struct compat_ustat __user *u32);
 250
 251asmlinkage ssize_t compat_sys_readv(unsigned long fd,
 252                const struct compat_iovec __user *vec, unsigned long vlen);
 253asmlinkage ssize_t compat_sys_writev(unsigned long fd,
 254                const struct compat_iovec __user *vec, unsigned long vlen);
 255asmlinkage ssize_t compat_sys_preadv(unsigned long fd,
 256                const struct compat_iovec __user *vec,
 257                unsigned long vlen, u32 pos_low, u32 pos_high);
 258asmlinkage ssize_t compat_sys_pwritev(unsigned long fd,
 259                const struct compat_iovec __user *vec,
 260                unsigned long vlen, u32 pos_low, u32 pos_high);
 261
 262int compat_do_execve(char *filename, compat_uptr_t __user *argv,
 263                     compat_uptr_t __user *envp, struct pt_regs *regs);
 264
 265asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp,
 266                compat_ulong_t __user *outp, compat_ulong_t __user *exp,
 267                struct compat_timeval __user *tvp);
 268
 269asmlinkage long compat_sys_old_select(struct compat_sel_arg_struct __user *arg);
 270
 271asmlinkage long compat_sys_wait4(compat_pid_t pid,
 272                                 compat_uint_t __user *stat_addr, int options,
 273                                 struct compat_rusage __user *ru);
 274
 275#define BITS_PER_COMPAT_LONG    (8*sizeof(compat_long_t))
 276
 277#define BITS_TO_COMPAT_LONGS(bits) \
 278        (((bits)+BITS_PER_COMPAT_LONG-1)/BITS_PER_COMPAT_LONG)
 279
 280long compat_get_bitmap(unsigned long *mask, const compat_ulong_t __user *umask,
 281                       unsigned long bitmap_size);
 282long compat_put_bitmap(compat_ulong_t __user *umask, unsigned long *mask,
 283                       unsigned long bitmap_size);
 284int copy_siginfo_from_user32(siginfo_t *to, struct compat_siginfo __user *from);
 285int copy_siginfo_to_user32(struct compat_siginfo __user *to, siginfo_t *from);
 286int get_compat_sigevent(struct sigevent *event,
 287                const struct compat_sigevent __user *u_event);
 288long compat_sys_rt_tgsigqueueinfo(compat_pid_t tgid, compat_pid_t pid, int sig,
 289                                  struct compat_siginfo __user *uinfo);
 290
 291static inline int compat_timeval_compare(struct compat_timeval *lhs,
 292                                        struct compat_timeval *rhs)
 293{
 294        if (lhs->tv_sec < rhs->tv_sec)
 295                return -1;
 296        if (lhs->tv_sec > rhs->tv_sec)
 297                return 1;
 298        return lhs->tv_usec - rhs->tv_usec;
 299}
 300
 301static inline int compat_timespec_compare(struct compat_timespec *lhs,
 302                                        struct compat_timespec *rhs)
 303{
 304        if (lhs->tv_sec < rhs->tv_sec)
 305                return -1;
 306        if (lhs->tv_sec > rhs->tv_sec)
 307                return 1;
 308        return lhs->tv_nsec - rhs->tv_nsec;
 309}
 310
 311extern int get_compat_itimerspec(struct itimerspec *dst,
 312                                 const struct compat_itimerspec __user *src);
 313extern int put_compat_itimerspec(struct compat_itimerspec __user *dst,
 314                                 const struct itimerspec *src);
 315
 316asmlinkage long compat_sys_gettimeofday(struct compat_timeval __user *tv,
 317                struct timezone __user *tz);
 318asmlinkage long compat_sys_settimeofday(struct compat_timeval __user *tv,
 319                struct timezone __user *tz);
 320
 321asmlinkage long compat_sys_adjtimex(struct compat_timex __user *utp);
 322
 323extern int compat_printk(const char *fmt, ...);
 324extern void sigset_from_compat(sigset_t *set, compat_sigset_t *compat);
 325
 326asmlinkage long compat_sys_migrate_pages(compat_pid_t pid,
 327                compat_ulong_t maxnode, const compat_ulong_t __user *old_nodes,
 328                const compat_ulong_t __user *new_nodes);
 329
 330extern int compat_ptrace_request(struct task_struct *child,
 331                                 compat_long_t request,
 332                                 compat_ulong_t addr, compat_ulong_t data);
 333
 334extern long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
 335                               compat_ulong_t addr, compat_ulong_t data);
 336asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid,
 337                                  compat_long_t addr, compat_long_t data);
 338
 339/*
 340 * epoll (fs/eventpoll.c) compat bits follow ...
 341 */
 342struct epoll_event;
 343#define compat_epoll_event      epoll_event
 344asmlinkage long compat_sys_epoll_pwait(int epfd,
 345                        struct compat_epoll_event __user *events,
 346                        int maxevents, int timeout,
 347                        const compat_sigset_t __user *sigmask,
 348                        compat_size_t sigsetsize);
 349
 350asmlinkage long compat_sys_utime(const char __user *filename,
 351                                 struct compat_utimbuf __user *t);
 352asmlinkage long compat_sys_utimensat(unsigned int dfd,
 353                                     const char __user *filename,
 354                                     struct compat_timespec __user *t,
 355                                     int flags);
 356
 357asmlinkage long compat_sys_time(compat_time_t __user *tloc);
 358asmlinkage long compat_sys_stime(compat_time_t __user *tptr);
 359asmlinkage long compat_sys_signalfd(int ufd,
 360                                    const compat_sigset_t __user *sigmask,
 361                                    compat_size_t sigsetsize);
 362asmlinkage long compat_sys_timerfd_settime(int ufd, int flags,
 363                                   const struct compat_itimerspec __user *utmr,
 364                                   struct compat_itimerspec __user *otmr);
 365asmlinkage long compat_sys_timerfd_gettime(int ufd,
 366                                   struct compat_itimerspec __user *otmr);
 367
 368asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page,
 369                                      __u32 __user *pages,
 370                                      const int __user *nodes,
 371                                      int __user *status,
 372                                      int flags);
 373asmlinkage long compat_sys_futimesat(unsigned int dfd,
 374                                     const char __user *filename,
 375                                     struct compat_timeval __user *t);
 376asmlinkage long compat_sys_utimes(const char __user *filename,
 377                                  struct compat_timeval __user *t);
 378asmlinkage long compat_sys_newstat(const char __user *filename,
 379                                   struct compat_stat __user *statbuf);
 380asmlinkage long compat_sys_newlstat(const char __user *filename,
 381                                    struct compat_stat __user *statbuf);
 382asmlinkage long compat_sys_newfstatat(unsigned int dfd,
 383                                      const char __user *filename,
 384                                      struct compat_stat __user *statbuf,
 385                                      int flag);
 386asmlinkage long compat_sys_newfstat(unsigned int fd,
 387                                    struct compat_stat __user *statbuf);
 388asmlinkage long compat_sys_statfs(const char __user *pathname,
 389                                  struct compat_statfs __user *buf);
 390asmlinkage long compat_sys_fstatfs(unsigned int fd,
 391                                   struct compat_statfs __user *buf);
 392asmlinkage long compat_sys_statfs64(const char __user *pathname,
 393                                    compat_size_t sz,
 394                                    struct compat_statfs64 __user *buf);
 395asmlinkage long compat_sys_fstatfs64(unsigned int fd, compat_size_t sz,
 396                                     struct compat_statfs64 __user *buf);
 397asmlinkage long compat_sys_fcntl64(unsigned int fd, unsigned int cmd,
 398                                   unsigned long arg);
 399asmlinkage long compat_sys_fcntl(unsigned int fd, unsigned int cmd,
 400                                 unsigned long arg);
 401asmlinkage long compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p);
 402asmlinkage long compat_sys_io_getevents(aio_context_t ctx_id,
 403                                        unsigned long min_nr,
 404                                        unsigned long nr,
 405                                        struct io_event __user *events,
 406                                        struct compat_timespec __user *timeout);
 407asmlinkage long compat_sys_io_submit(aio_context_t ctx_id, int nr,
 408                                     u32 __user *iocb);
 409asmlinkage long compat_sys_mount(const char __user *dev_name,
 410                                 const char __user *dir_name,
 411                                 const char __user *type, unsigned long flags,
 412                                 const void __user *data);
 413asmlinkage long compat_sys_old_readdir(unsigned int fd,
 414                                       struct compat_old_linux_dirent __user *,
 415                                       unsigned int count);
 416asmlinkage long compat_sys_getdents(unsigned int fd,
 417                                    struct compat_linux_dirent __user *dirent,
 418                                    unsigned int count);
 419asmlinkage long compat_sys_getdents64(unsigned int fd,
 420                                      struct linux_dirent64 __user *dirent,
 421                                      unsigned int count);
 422asmlinkage long compat_sys_vmsplice(int fd, const struct compat_iovec __user *,
 423                                    unsigned int nr_segs, unsigned int flags);
 424asmlinkage long compat_sys_open(const char __user *filename, int flags,
 425                                int mode);
 426asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename,
 427                                  int flags, int mode);
 428asmlinkage long compat_sys_open_by_handle_at(int mountdirfd,
 429                                             struct file_handle __user *handle,
 430                                             int flags);
 431asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp,
 432                                    compat_ulong_t __user *outp,
 433                                    compat_ulong_t __user *exp,
 434                                    struct compat_timespec __user *tsp,
 435                                    void __user *sig);
 436asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,
 437                                 unsigned int nfds,
 438                                 struct compat_timespec __user *tsp,
 439                                 const compat_sigset_t __user *sigmask,
 440                                 compat_size_t sigsetsize);
 441asmlinkage long compat_sys_signalfd4(int ufd,
 442                                     const compat_sigset_t __user *sigmask,
 443                                     compat_size_t sigsetsize, int flags);
 444asmlinkage long compat_sys_get_mempolicy(int __user *policy,
 445                                         compat_ulong_t __user *nmask,
 446                                         compat_ulong_t maxnode,
 447                                         compat_ulong_t addr,
 448                                         compat_ulong_t flags);
 449asmlinkage long compat_sys_set_mempolicy(int mode, compat_ulong_t __user *nmask,
 450                                         compat_ulong_t maxnode);
 451asmlinkage long compat_sys_mbind(compat_ulong_t start, compat_ulong_t len,
 452                                 compat_ulong_t mode,
 453                                 compat_ulong_t __user *nmask,
 454                                 compat_ulong_t maxnode, compat_ulong_t flags);
 455
 456asmlinkage long compat_sys_setsockopt(int fd, int level, int optname,
 457                                      char __user *optval, unsigned int optlen);
 458asmlinkage long compat_sys_sendmsg(int fd, struct compat_msghdr __user *msg,
 459                                   unsigned flags);
 460asmlinkage long compat_sys_sendmmsg(int fd, struct compat_mmsghdr __user *mmsg,
 461                                    unsigned vlen, unsigned int flags);
 462asmlinkage long compat_sys_recvmsg(int fd, struct compat_msghdr __user *msg,
 463                                   unsigned int flags);
 464asmlinkage long compat_sys_recv(int fd, void __user *buf, size_t len,
 465                                unsigned flags);
 466asmlinkage long compat_sys_recvfrom(int fd, void __user *buf, size_t len,
 467                            unsigned flags, struct sockaddr __user *addr,
 468                            int __user *addrlen);
 469asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg,
 470                                    unsigned vlen, unsigned int flags,
 471                                    struct compat_timespec __user *timeout);
 472asmlinkage long compat_sys_nanosleep(struct compat_timespec __user *rqtp,
 473                                     struct compat_timespec __user *rmtp);
 474asmlinkage long compat_sys_getitimer(int which,
 475                                     struct compat_itimerval __user *it);
 476asmlinkage long compat_sys_setitimer(int which,
 477                                     struct compat_itimerval __user *in,
 478                                     struct compat_itimerval __user *out);
 479asmlinkage long compat_sys_times(struct compat_tms __user *tbuf);
 480asmlinkage long compat_sys_setrlimit(unsigned int resource,
 481                                     struct compat_rlimit __user *rlim);
 482asmlinkage long compat_sys_getrlimit(unsigned int resource,
 483                                     struct compat_rlimit __user *rlim);
 484asmlinkage long compat_sys_getrusage(int who, struct compat_rusage __user *ru);
 485asmlinkage long compat_sys_sched_setaffinity(compat_pid_t pid,
 486                                     unsigned int len,
 487                                     compat_ulong_t __user *user_mask_ptr);
 488asmlinkage long compat_sys_sched_getaffinity(compat_pid_t pid,
 489                                     unsigned int len,
 490                                     compat_ulong_t __user *user_mask_ptr);
 491asmlinkage long compat_sys_timer_create(clockid_t which_clock,
 492                        struct compat_sigevent __user *timer_event_spec,
 493                        timer_t __user *created_timer_id);
 494asmlinkage long compat_sys_timer_settime(timer_t timer_id, int flags,
 495                                         struct compat_itimerspec __user *new,
 496                                         struct compat_itimerspec __user *old);
 497asmlinkage long compat_sys_timer_gettime(timer_t timer_id,
 498                                 struct compat_itimerspec __user *setting);
 499asmlinkage long compat_sys_clock_settime(clockid_t which_clock,
 500                                         struct compat_timespec __user *tp);
 501asmlinkage long compat_sys_clock_gettime(clockid_t which_clock,
 502                                         struct compat_timespec __user *tp);
 503asmlinkage long compat_sys_clock_adjtime(clockid_t which_clock,
 504                                         struct compat_timex __user *tp);
 505asmlinkage long compat_sys_clock_getres(clockid_t which_clock,
 506                                        struct compat_timespec __user *tp);
 507asmlinkage long compat_sys_clock_nanosleep(clockid_t which_clock, int flags,
 508                                           struct compat_timespec __user *rqtp,
 509                                           struct compat_timespec __user *rmtp);
 510asmlinkage long compat_sys_rt_sigtimedwait(compat_sigset_t __user *uthese,
 511                struct compat_siginfo __user *uinfo,
 512                struct compat_timespec __user *uts, compat_size_t sigsetsize);
 513asmlinkage long compat_sys_rt_sigsuspend(compat_sigset_t __user *unewset,
 514                                         compat_size_t sigsetsize);
 515asmlinkage long compat_sys_sysinfo(struct compat_sysinfo __user *info);
 516asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd,
 517                                 unsigned long arg);
 518asmlinkage long compat_sys_futex(u32 __user *uaddr, int op, u32 val,
 519                struct compat_timespec __user *utime, u32 __user *uaddr2,
 520                u32 val3);
 521asmlinkage long compat_sys_getsockopt(int fd, int level, int optname,
 522                                      char __user *optval, int __user *optlen);
 523asmlinkage long compat_sys_kexec_load(unsigned long entry,
 524                                      unsigned long nr_segments,
 525                                      struct compat_kexec_segment __user *,
 526                                      unsigned long flags);
 527asmlinkage long compat_sys_mq_getsetattr(mqd_t mqdes,
 528                        const struct compat_mq_attr __user *u_mqstat,
 529                        struct compat_mq_attr __user *u_omqstat);
 530asmlinkage long compat_sys_mq_notify(mqd_t mqdes,
 531                        const struct compat_sigevent __user *u_notification);
 532asmlinkage long compat_sys_mq_open(const char __user *u_name,
 533                        int oflag, compat_mode_t mode,
 534                        struct compat_mq_attr __user *u_attr);
 535asmlinkage long compat_sys_mq_timedsend(mqd_t mqdes,
 536                        const char __user *u_msg_ptr,
 537                        size_t msg_len, unsigned int msg_prio,
 538                        const struct compat_timespec __user *u_abs_timeout);
 539asmlinkage ssize_t compat_sys_mq_timedreceive(mqd_t mqdes,
 540                        char __user *u_msg_ptr,
 541                        size_t msg_len, unsigned int __user *u_msg_prio,
 542                        const struct compat_timespec __user *u_abs_timeout);
 543asmlinkage long compat_sys_socketcall(int call, u32 __user *args);
 544asmlinkage long compat_sys_sysctl(struct compat_sysctl_args __user *args);
 545
 546extern ssize_t compat_rw_copy_check_uvector(int type,
 547                const struct compat_iovec __user *uvector,
 548                unsigned long nr_segs,
 549                unsigned long fast_segs, struct iovec *fast_pointer,
 550                struct iovec **ret_pointer);
 551
 552extern void __user *compat_alloc_user_space(unsigned long len);
 553
 554#endif /* CONFIG_COMPAT */
 555#endif /* _LINUX_COMPAT_H */
 556