The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/compat/freebsd32/freebsd32.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 2001 Doug Rabson
    5  * All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  *
   16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   26  * SUCH DAMAGE.
   27  *
   28  * $FreeBSD: releng/12.0/sys/compat/freebsd32/freebsd32.h 326266 2017-11-27 15:13:23Z pfg $
   29  */
   30 
   31 #ifndef _COMPAT_FREEBSD32_FREEBSD32_H_
   32 #define _COMPAT_FREEBSD32_FREEBSD32_H_
   33 
   34 #include <sys/procfs.h>
   35 #include <sys/socket.h>
   36 #include <sys/user.h>
   37 
   38 #define PTRIN(v)        (void *)(uintptr_t) (v)
   39 #define PTROUT(v)       (u_int32_t)(uintptr_t) (v)
   40 
   41 #define CP(src,dst,fld) do { (dst).fld = (src).fld; } while (0)
   42 #define PTRIN_CP(src,dst,fld) \
   43         do { (dst).fld = PTRIN((src).fld); } while (0)
   44 #define PTROUT_CP(src,dst,fld) \
   45         do { (dst).fld = PTROUT((src).fld); } while (0)
   46 
   47 /*
   48  * i386 is the only arch with a 32-bit time_t
   49  */
   50 #ifdef __amd64__
   51 typedef int32_t time32_t;
   52 #else
   53 typedef int64_t time32_t;
   54 #endif
   55 
   56 struct timeval32 {
   57         time32_t tv_sec;
   58         int32_t tv_usec;
   59 };
   60 #define TV_CP(src,dst,fld) do {                 \
   61         CP((src).fld,(dst).fld,tv_sec);         \
   62         CP((src).fld,(dst).fld,tv_usec);        \
   63 } while (0)
   64 
   65 struct timespec32 {
   66         time32_t tv_sec;
   67         int32_t tv_nsec;
   68 };
   69 #define TS_CP(src,dst,fld) do {                 \
   70         CP((src).fld,(dst).fld,tv_sec);         \
   71         CP((src).fld,(dst).fld,tv_nsec);        \
   72 } while (0)
   73 
   74 struct itimerspec32 {
   75         struct timespec32  it_interval;
   76         struct timespec32  it_value;
   77 };
   78 #define ITS_CP(src, dst) do {                   \
   79         TS_CP((src), (dst), it_interval);       \
   80         TS_CP((src), (dst), it_value);          \
   81 } while (0)
   82 
   83 struct bintime32 {
   84         time32_t sec;
   85         uint32_t frac[2];
   86 };
   87 #define BT_CP(src, dst, fld) do {                               \
   88         CP((src).fld, (dst).fld, sec);                          \
   89         *(uint64_t *)&(dst).fld.frac[0] = (src).fld.frac;       \
   90 } while (0)
   91 
   92 struct rusage32 {
   93         struct timeval32 ru_utime;
   94         struct timeval32 ru_stime;
   95         int32_t ru_maxrss;
   96         int32_t ru_ixrss;
   97         int32_t ru_idrss;
   98         int32_t ru_isrss;
   99         int32_t ru_minflt;
  100         int32_t ru_majflt;
  101         int32_t ru_nswap;
  102         int32_t ru_inblock;
  103         int32_t ru_oublock;
  104         int32_t ru_msgsnd;
  105         int32_t ru_msgrcv;
  106         int32_t ru_nsignals;
  107         int32_t ru_nvcsw;
  108         int32_t ru_nivcsw;
  109 };
  110 
  111 struct wrusage32 {
  112         struct rusage32 wru_self;
  113         struct rusage32 wru_children;
  114 };
  115 
  116 struct itimerval32 {
  117         struct timeval32 it_interval;
  118         struct timeval32 it_value;
  119 };
  120 
  121 #define FREEBSD4_MFSNAMELEN     16
  122 #define FREEBSD4_MNAMELEN       (88 - 2 * sizeof(int32_t))
  123 
  124 /* 4.x version */
  125 struct statfs32 {
  126         int32_t f_spare2;
  127         int32_t f_bsize;
  128         int32_t f_iosize;
  129         int32_t f_blocks;
  130         int32_t f_bfree;
  131         int32_t f_bavail;
  132         int32_t f_files;
  133         int32_t f_ffree;
  134         fsid_t  f_fsid;
  135         uid_t   f_owner;
  136         int32_t f_type;
  137         int32_t f_flags;
  138         int32_t f_syncwrites;
  139         int32_t f_asyncwrites;
  140         char    f_fstypename[FREEBSD4_MFSNAMELEN];
  141         char    f_mntonname[FREEBSD4_MNAMELEN];
  142         int32_t f_syncreads;
  143         int32_t f_asyncreads;
  144         int16_t f_spares1;
  145         char    f_mntfromname[FREEBSD4_MNAMELEN];
  146         int16_t f_spares2 __packed;
  147         int32_t f_spare[2];
  148 };
  149 
  150 struct iovec32 {
  151         u_int32_t iov_base;
  152         int     iov_len;
  153 };
  154 
  155 struct msghdr32 {
  156         u_int32_t        msg_name;
  157         socklen_t        msg_namelen;
  158         u_int32_t        msg_iov;
  159         int              msg_iovlen;
  160         u_int32_t        msg_control;
  161         socklen_t        msg_controllen;
  162         int              msg_flags;
  163 };
  164 
  165 #if defined(__amd64__)
  166 #define __STAT32_TIME_T_EXT     1
  167 #endif
  168 
  169 struct stat32 {
  170         dev_t st_dev;
  171         ino_t st_ino;
  172         nlink_t st_nlink;
  173         mode_t  st_mode;
  174         u_int16_t st_padding0;
  175         uid_t   st_uid;
  176         gid_t   st_gid;
  177         u_int32_t st_padding1;
  178         dev_t st_rdev;
  179 #ifdef  __STAT32_TIME_T_EXT
  180         __int32_t st_atim_ext;
  181 #endif
  182         struct timespec32 st_atim;
  183 #ifdef  __STAT32_TIME_T_EXT
  184         __int32_t st_mtim_ext;
  185 #endif
  186         struct timespec32 st_mtim;
  187 #ifdef  __STAT32_TIME_T_EXT
  188         __int32_t st_ctim_ext;
  189 #endif
  190         struct timespec32 st_ctim;
  191 #ifdef  __STAT32_TIME_T_EXT
  192         __int32_t st_btim_ext;
  193 #endif
  194         struct timespec32 st_birthtim;
  195         off_t   st_size;
  196         int64_t st_blocks;
  197         u_int32_t st_blksize;
  198         u_int32_t st_flags;
  199         u_int64_t st_gen;
  200         u_int64_t st_spare[10];
  201 };
  202 struct freebsd11_stat32 {
  203         u_int32_t st_dev;
  204         u_int32_t st_ino;
  205         mode_t  st_mode;
  206         u_int16_t st_nlink;
  207         uid_t   st_uid;
  208         gid_t   st_gid;
  209         u_int32_t st_rdev;
  210         struct timespec32 st_atim;
  211         struct timespec32 st_mtim;
  212         struct timespec32 st_ctim;
  213         off_t   st_size;
  214         int64_t st_blocks;
  215         u_int32_t st_blksize;
  216         u_int32_t st_flags;
  217         u_int32_t st_gen;
  218         int32_t st_lspare;
  219         struct timespec32 st_birthtim;
  220         unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec32));
  221         unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec32));
  222 };
  223 
  224 struct ostat32 {
  225         __uint16_t st_dev;
  226         __uint32_t st_ino;
  227         mode_t  st_mode;
  228         __uint16_t st_nlink;
  229         __uint16_t st_uid;
  230         __uint16_t st_gid;
  231         __uint16_t st_rdev;
  232         __int32_t st_size;
  233         struct timespec32 st_atim;
  234         struct timespec32 st_mtim;
  235         struct timespec32 st_ctim;
  236         __int32_t st_blksize;
  237         __int32_t st_blocks;
  238         u_int32_t st_flags;
  239         __uint32_t st_gen;
  240 };
  241 
  242 struct jail32_v0 {
  243         u_int32_t       version;
  244         uint32_t        path;
  245         uint32_t        hostname;
  246         u_int32_t       ip_number;
  247 };
  248 
  249 struct jail32 {
  250         uint32_t        version;
  251         uint32_t        path;
  252         uint32_t        hostname;
  253         uint32_t        jailname;
  254         uint32_t        ip4s;
  255         uint32_t        ip6s;
  256         uint32_t        ip4;
  257         uint32_t        ip6;
  258 };
  259 
  260 struct sigaction32 {
  261         u_int32_t       sa_u;
  262         int             sa_flags;
  263         sigset_t        sa_mask;
  264 };
  265 
  266 struct thr_param32 {
  267         uint32_t start_func;
  268         uint32_t arg;
  269         uint32_t stack_base;
  270         uint32_t stack_size;
  271         uint32_t tls_base;
  272         uint32_t tls_size;
  273         uint32_t child_tid;
  274         uint32_t parent_tid;
  275         int32_t  flags;
  276         uint32_t rtp;
  277         uint32_t spare[3];
  278 };
  279 
  280 struct i386_ldt_args32 {
  281         uint32_t start;
  282         uint32_t descs;
  283         uint32_t num;
  284 };
  285 
  286 struct mq_attr32 {
  287         int     mq_flags;
  288         int     mq_maxmsg;
  289         int     mq_msgsize;
  290         int     mq_curmsgs;
  291         int     __reserved[4];
  292 };
  293 
  294 struct kinfo_proc32 {
  295         int     ki_structsize;
  296         int     ki_layout;
  297         uint32_t ki_args;
  298         uint32_t ki_paddr;
  299         uint32_t ki_addr;
  300         uint32_t ki_tracep;
  301         uint32_t ki_textvp;
  302         uint32_t ki_fd;
  303         uint32_t ki_vmspace;
  304         uint32_t ki_wchan;
  305         pid_t   ki_pid;
  306         pid_t   ki_ppid;
  307         pid_t   ki_pgid;
  308         pid_t   ki_tpgid;
  309         pid_t   ki_sid;
  310         pid_t   ki_tsid;
  311         short   ki_jobc;
  312         short   ki_spare_short1;
  313         uint32_t ki_tdev_freebsd11;
  314         sigset_t ki_siglist;
  315         sigset_t ki_sigmask;
  316         sigset_t ki_sigignore;
  317         sigset_t ki_sigcatch;
  318         uid_t   ki_uid;
  319         uid_t   ki_ruid;
  320         uid_t   ki_svuid;
  321         gid_t   ki_rgid;
  322         gid_t   ki_svgid;
  323         short   ki_ngroups;
  324         short   ki_spare_short2;
  325         gid_t   ki_groups[KI_NGROUPS];
  326         uint32_t ki_size;
  327         int32_t ki_rssize;
  328         int32_t ki_swrss;
  329         int32_t ki_tsize;
  330         int32_t ki_dsize;
  331         int32_t ki_ssize;
  332         u_short ki_xstat;
  333         u_short ki_acflag;
  334         fixpt_t ki_pctcpu;
  335         u_int   ki_estcpu;
  336         u_int   ki_slptime;
  337         u_int   ki_swtime;
  338         u_int   ki_cow;
  339         u_int64_t ki_runtime;
  340         struct  timeval32 ki_start;
  341         struct  timeval32 ki_childtime;
  342         int     ki_flag;
  343         int     ki_kiflag;
  344         int     ki_traceflag;
  345         char    ki_stat;
  346         signed char ki_nice;
  347         char    ki_lock;
  348         char    ki_rqindex;
  349         u_char  ki_oncpu_old;
  350         u_char  ki_lastcpu_old;
  351         char    ki_tdname[TDNAMLEN+1];
  352         char    ki_wmesg[WMESGLEN+1];
  353         char    ki_login[LOGNAMELEN+1];
  354         char    ki_lockname[LOCKNAMELEN+1];
  355         char    ki_comm[COMMLEN+1];
  356         char    ki_emul[KI_EMULNAMELEN+1];
  357         char    ki_loginclass[LOGINCLASSLEN+1];
  358         char    ki_moretdname[MAXCOMLEN-TDNAMLEN+1];
  359         char    ki_sparestrings[46];
  360         int     ki_spareints[KI_NSPARE_INT];
  361         uint64_t ki_tdev;
  362         int     ki_oncpu;
  363         int     ki_lastcpu;
  364         int     ki_tracer;
  365         int     ki_flag2;
  366         int     ki_fibnum;
  367         u_int   ki_cr_flags;
  368         int     ki_jid;
  369         int     ki_numthreads;
  370         lwpid_t ki_tid;
  371         struct  priority ki_pri;
  372         struct  rusage32 ki_rusage;
  373         struct  rusage32 ki_rusage_ch;
  374         uint32_t ki_pcb;
  375         uint32_t ki_kstack;
  376         uint32_t ki_udata;
  377         uint32_t ki_tdaddr;
  378         uint32_t ki_spareptrs[KI_NSPARE_PTR];   /* spare room for growth */
  379         int     ki_sparelongs[KI_NSPARE_LONG];
  380         int     ki_sflag;
  381         int     ki_tdflags;
  382 };
  383 
  384 struct kinfo_sigtramp32 {
  385         uint32_t ksigtramp_start;
  386         uint32_t ksigtramp_end;
  387         uint32_t ksigtramp_spare[4];
  388 };
  389 
  390 struct kld32_file_stat_1 {
  391         int     version;        /* set to sizeof(struct kld_file_stat_1) */
  392         char    name[MAXPATHLEN];
  393         int     refs;
  394         int     id;
  395         uint32_t address;       /* load address */
  396         uint32_t size;          /* size in bytes */
  397 };
  398 
  399 struct kld32_file_stat {
  400         int     version;        /* set to sizeof(struct kld_file_stat) */
  401         char    name[MAXPATHLEN];
  402         int     refs;
  403         int     id;
  404         uint32_t address;       /* load address */
  405         uint32_t size;          /* size in bytes */
  406         char    pathname[MAXPATHLEN];
  407 };
  408 
  409 struct procctl_reaper_pids32 {
  410         u_int   rp_count;
  411         u_int   rp_pad0[15];
  412         uint32_t rp_pids;
  413 };
  414 
  415 #endif /* !_COMPAT_FREEBSD32_FREEBSD32_H_ */

Cache object: 60bdef42eeb6242ac4172e75a3eaab7d


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.