Print this page
    
OS-5192 need faster clock_gettime
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Joshua M. Clulow <jmc@joyent.com>
Reviewed by: Ryan Zezeski <ryan@zinascii.com>
OS-5202 Support AT_SECURE & AT_*ID in LX
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
OS-3405 lx brand: socket() fails for PF_INET6
OS-3382 lxbrand 64bit gettimeofday depends on vsyscall or vdso
OS-3280 need a way to specify the root of a native system in the lx brand
OS-3279 lx brand should allow delegated datasets
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
OS-2949 add support for AT_RANDOM aux vector entry
    
      
        | Split | 
	Close | 
      
      | Expand all | 
      | Collapse all | 
    
    
          --- old/usr/src/uts/common/sys/auxv.h
          +++ new/usr/src/uts/common/sys/auxv.h
   1    1  /*
   2    2   * CDDL HEADER START
   3    3   *
   4    4   * The contents of this file are subject to the terms of the
   5    5   * Common Development and Distribution License (the "License").
   6    6   * You may not use this file except in compliance with the License.
   7    7   *
   8    8   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9    9   * or http://www.opensolaris.org/os/licensing.
  10   10   * See the License for the specific language governing permissions
  11   11   * and limitations under the License.
  12   12   *
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
  
    | 
      ↓ open down ↓ | 
    21 lines elided | 
    
      ↑ open up ↑ | 
  
  22   22  /*        All Rights Reserved   */
  23   23  
  24   24  
  25   25  /*
  26   26   * Copyright 2014 Garrett D'Amore <garrett@damore.org>
  27   27   *
  28   28   * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  29   29   * Use is subject to license terms.
  30   30   */
  31   31  /*
  32      - * Copyright (c) 2012, Joyent, Inc.  All rights reserved.
       32 + * Copyright 2016 Joyent, Inc.
  33   33   */
  34   34  
  35   35  #ifndef _SYS_AUXV_H
  36   36  #define _SYS_AUXV_H
  37   37  
  38   38  #include <sys/types.h>
  39   39  
  40   40  #ifdef  __cplusplus
  41   41  extern "C" {
  42   42  #endif
  43   43  
  44   44  #if !defined(_ASM)
  45   45  typedef struct
  46   46  {
  47   47          int     a_type;
  48   48          union {
  49   49                  long    a_val;
  50   50                  void    *a_ptr;
  51   51                  void    (*a_fcn)();
  52   52          } a_un;
  53   53  } auxv_t;
  54   54  
  55   55  #if defined(_SYSCALL32)
  56   56  
  57   57  typedef struct {
  58   58          int32_t a_type;
  59   59          union   {
  60   60                  int32_t a_val;
  61   61                  caddr32_t a_ptr;
  62   62                  caddr32_t a_fcn;
  63   63          } a_un;
  64   64  } auxv32_t;
  65   65  
  66   66  #endif  /* _SYSCALL32 */
  67   67  
  68   68  #endif /* _ASM */
  69   69  
  70   70  #define AT_NULL         0
  
    | 
      ↓ open down ↓ | 
    28 lines elided | 
    
      ↑ open up ↑ | 
  
  71   71  #define AT_IGNORE       1
  72   72  #define AT_EXECFD       2
  73   73  #define AT_PHDR         3       /* &phdr[0] */
  74   74  #define AT_PHENT        4       /* sizeof(phdr[0]) */
  75   75  #define AT_PHNUM        5       /* # phdr entries */
  76   76  #define AT_PAGESZ       6       /* getpagesize(2) */
  77   77  #define AT_BASE         7       /* ld.so base addr */
  78   78  #define AT_FLAGS        8       /* processor flags */
  79   79  #define AT_ENTRY        9       /* a.out entry point */
  80   80  
       81 +/* First introduced on Linux */
       82 +#define AT_RANDOM       25      /* address of 16 random bytes */
       83 +
  81   84  /*
  82   85   * These relate to the original PPC ABI document; Linux reused
  83   86   * the values for other things (see below), so disambiguation of
  84   87   * these values may require additional context in PPC binaries.
  85   88   *
  86   89   * AT_DCACHEBSIZE       10      smallest data cache block size
  87   90   * AT_ICACHEBSIZE       11      smallest instruction cache block size
  88   91   * AT_UCACHEBSIZE       12      smallest unified cache block size
  89   92   *
  90   93   * These are the values from LSB 1.3, the first five are also described
  91   94   * in the draft amd64 ABI.
  92   95   *
  93      - * At the time of writing, Solaris doesn't place any of these values into
  94      - * the aux vector, except AT_CLKTCK which is placed on the aux vector for
  95      - * lx branded processes; also, we do similar things via AT_SUN_ values.
       96 + * At the time of writing, illumos doesn't place any of these values into the
       97 + * aux vector, except where noted. We do similar things via AT_SUN_ values.
  96   98   *
  97   99   * AT_NOTELF            10      program is not ELF?
  98      - * AT_UID               11      real user id
  99      - * AT_EUID              12      effective user id
 100      - * AT_GID               13      real group id
 101      - * AT_EGID              14      effective group id
      100 + * AT_UID               11      real user id (provided in LX)
      101 + * AT_EUID              12      effective user id (provided in LX)
      102 + * AT_GID               13      real group id (provided in LX)
      103 + * AT_EGID              14      effective group id (provided in LX)
 102  104   *
 103  105   * AT_PLATFORM          15
 104  106   * AT_HWCAP             16
 105      - * AT_CLKTCK            17      c.f. _SC_CLK_TCK
      107 + * AT_CLKTCK            17      c.f. _SC_CLK_TCK (provided in LX)
 106  108   * AT_FPUCW             18
 107  109   *
 108  110   * AT_DCACHEBSIZE       19      (moved from 10)
 109  111   * AT_ICACHEBSIZE       20      (moved from 11)
 110  112   * AT_UCACHEBSIZE       21      (moved from 12)
 111  113   *
 112  114   * AT_IGNOREPPC         22
      115 + *
      116 + * On Linux:
      117 + * AT_* values 18 through 22 are reserved
      118 + * AT_SECURE            23      secure mode boolean (provided in LX)
      119 + * AT_BASE_PLATFORM     24      string identifying real platform, may
      120 + *                              differ from AT_PLATFORM.
      121 + * AT_HWCAP2            26      extension of AT_HWCAP
      122 + * AT_EXECFN            31      filename of program
      123 + * AT_SYSINFO           32
      124 + * AT_SYSINFO_EHDR      33      The vDSO location
 113  125   */
 114  126  
 115  127  /*
 116  128   * Sun extensions begin here
 117  129   */
 118  130  #define AT_SUN_UID      2000    /* effective user id */
 119  131  #define AT_SUN_RUID     2001    /* real user id */
 120  132  #define AT_SUN_GID      2002    /* effective group id */
 121  133  #define AT_SUN_RGID     2003    /* real group id */
 122  134  
 123  135  /*
 124  136   * The following attributes are specific to the
 125  137   * kernel implementation of the linker/loader.
 126  138   */
 127  139  #define AT_SUN_LDELF    2004    /* dynamic linker's ELF header */
 128  140  #define AT_SUN_LDSHDR   2005    /* dynamic linker's section headers */
 129  141  #define AT_SUN_LDNAME   2006    /* name of dynamic linker */
 130  142  #define AT_SUN_LPAGESZ  2007    /* large pagesize */
 131  143  /*
 132  144   * The following aux vector provides a null-terminated platform
 133  145   * identification string. This information is the same as provided
 134  146   * by sysinfo(2) when invoked with the command SI_PLATFORM.
 135  147   */
 136  148  #define AT_SUN_PLATFORM 2008    /* platform name */
 137  149  
 138  150  /*
 139  151   * These attributes communicate performance -hints- about processor
 140  152   * hardware capabilities that might be useful to library implementations.
 141  153   */
 142  154  #define AT_SUN_HWCAP    2009
 143  155  #define AT_SUN_HWCAP2   2023
 144  156  
 145  157  #if defined(_KERNEL)
 146  158  /*
 147  159   * User info regarding machine attributes, respectively reported to native and
 148  160   * non-native user apps.
 149  161   */
 150  162  extern uint_t auxv_hwcap;
 151  163  extern uint_t auxv_hwcap_2;
 152  164  #if defined(_SYSCALL32)
 153  165  extern uint_t auxv_hwcap32;
 154  166  extern uint_t auxv_hwcap32_2;
 155  167  #endif /* _SYSCALL32 */
 156  168  #else
 157  169  extern uint_t getisax(uint32_t *, uint_t);
 158  170  #endif  /* _KERNEL */
 159  171  
 160  172  #define AT_SUN_IFLUSH   2010    /* flush icache? */
 161  173  #define AT_SUN_CPU      2011    /* cpu name */
 162  174  
 163  175  /*
 164  176   * The following aux vector provides a pointer to a null-terminated
 165  177   * path name, a copy of the path name passed to the exec() system
 166  178   * call but that has had all symlinks resolved (see resolvepath(2)).
 167  179   */
 168  180  #define AT_SUN_EXECNAME 2014    /* exec() path name */
 169  181  
 170  182  #define AT_SUN_MMU      2015    /* mmu module name */
 171  183  #define AT_SUN_LDDATA   2016    /* dynamic linkers data segment */
 172  184  
 173  185  #define AT_SUN_AUXFLAGS 2017    /* AF_SUN_ flags passed from the kernel */
 174  186  
 175  187  /*
 176  188   * Used to indicate to the runtime linker the name of the emulation binary,
 177  189   * if one is being used. For brands, this is the name of the brand library.
 178  190   */
  
    | 
      ↓ open down ↓ | 
    56 lines elided | 
    
      ↑ open up ↑ | 
  
 179  191  #define AT_SUN_EMULATOR         2018
 180  192  
 181  193  #define AT_SUN_BRANDNAME        2019
 182  194  
 183  195  /*
 184  196   * Aux vectors available for brand modules.
 185  197   */
 186  198  #define AT_SUN_BRAND_AUX1       2020
 187  199  #define AT_SUN_BRAND_AUX2       2021
 188  200  #define AT_SUN_BRAND_AUX3       2022
      201 +#define AT_SUN_BRAND_AUX4       2025
      202 +#define AT_SUN_BRAND_NROOT      2024
 189  203  
 190  204  /*
      205 + * Aux vector for comm page
      206 + */
      207 +#define AT_SUN_COMMPAGE         2026
      208 +
      209 +/*
 191  210   * Note that 2023 is reserved for the AT_SUN_HWCAP2 word defined above.
 192  211   */
 193  212  
 194  213  /*
 195  214   * The kernel is in a better position to determine whether a process needs to
 196  215   * ignore dangerous LD environment variables.  If set, this flags tells
 197  216   * ld.so.1 to run "secure" and ignore the the environment.
 198  217   */
 199  218  #define AF_SUN_SETUGID          0x00000001
 200  219  
 201  220  /*
 202  221   * If set, this flag indicates that hardware capabilites can be verified
 203  222   * against the AT_SUN_HWCAP value.
 204  223   */
 205  224  #define AF_SUN_HWCAPVERIFY      0x00000002
 206  225  
 207  226  /*
 208  227   * If set, this flag indicates that the the linker should not initialize
 209  228   * any of its link maps as primary link wrt the unified libc threading
 210  229   * interfaces.
 211  230   */
 212  231  #define AF_SUN_NOPLM            0x00000004
 213  232  
 214  233  #ifdef  __cplusplus
 215  234  }
 216  235  #endif
 217  236  
 218  237  #if defined(_AUXV_TARGET_ALL) || defined(_AUXV_TARGET_SPARC) || defined(__sparc)
 219  238  #include <sys/auxv_SPARC.h>
 220  239  #endif
 221  240  
 222  241  #if defined(_AUXV_TARGET_ALL) || defined(_AUXV_TARGET_386) || defined(__x86)
 223  242  #include <sys/auxv_386.h>
 224  243  #endif
 225  244  
 226  245  #endif  /* _SYS_AUXV_H */
  
    | 
      ↓ open down ↓ | 
    26 lines elided | 
    
      ↑ open up ↑ | 
  
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX