Print this page
    
12046 Provide /proc/<PID>/fdinfo/
    
      
        | Split | 
	Close | 
      
      | Expand all | 
      | Collapse all | 
    
    
          --- old/usr/src/uts/common/sys/prsystm.h
          +++ new/usr/src/uts/common/sys/prsystm.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  
  
    | 
      ↓ open down ↓ | 
    21 lines elided | 
    
      ↑ open up ↑ | 
  
  22   22  /*
  23   23   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  24   24   * Use is subject to license terms.
  25   25   */
  26   26  
  27   27  /*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
  28   28  /*        All Rights Reserved   */
  29   29  
  30   30  /*
  31   31   * Copyright (c) 2013, Joyent, Inc. All rights reserved.
       32 + * Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
  32   33   */
  33   34  
  34   35  #ifndef _SYS_PRSYSTM_H
  35   36  #define _SYS_PRSYSTM_H
  36   37  
  37   38  #include <sys/isa_defs.h>
  38   39  #include <sys/zone.h>
  39   40  
  40   41  #ifdef  __cplusplus
  41   42  extern "C" {
  42   43  #endif
  43   44  
  44   45  #if defined(_KERNEL)
  45   46  
  46   47  extern kmutex_t pr_pidlock;
  
    | 
      ↓ open down ↓ | 
    5 lines elided | 
    
      ↑ open up ↑ | 
  
  47   48  extern kcondvar_t *pr_pid_cv;
  48   49  
  49   50  struct prfpregset;
  50   51  struct pstatus;
  51   52  struct lwpstatus;
  52   53  struct psinfo;
  53   54  struct lwpsinfo;
  54   55  struct prcred;
  55   56  struct prpriv;
  56   57  struct prsecflags;
       58 +struct prfdinfov2;
  57   59  
  58   60  struct seg;
  59   61  struct regs;
  60   62  struct watched_page;
  61   63  
  62   64  /*
  63   65   * These are functions in the procfs module that are
  64   66   * called from the kernel proper and from other modules.
  65   67   */
  66   68  extern uint_t pr_getprot(struct seg *, int, void **,
  67   69          caddr_t *, caddr_t *, caddr_t);
  68   70  extern void pr_getprot_done(void **);
  69   71  extern size_t pr_getsegsize(struct seg *, int);
  
    | 
      ↓ open down ↓ | 
    3 lines elided | 
    
      ↑ open up ↑ | 
  
  70   72  extern int  pr_isobject(struct vnode *);
  71   73  extern int  pr_isself(struct vnode *);
  72   74  extern void prinvalidate(struct user *);
  73   75  extern void prgetstatus(proc_t *, struct pstatus *, zone_t *);
  74   76  extern void prgetlwpstatus(kthread_t *, struct lwpstatus *, zone_t *);
  75   77  extern void prgetpsinfo(proc_t *, struct psinfo *);
  76   78  extern void prgetlwpsinfo(kthread_t *, struct lwpsinfo *);
  77   79  extern void prgetprfpregs(klwp_t *, struct prfpregset *);
  78   80  extern void prgetprxregs(klwp_t *, caddr_t);
  79   81  extern int  prgetprxregsize(proc_t *);
  80      -#if defined(__lint)
  81      -/* Work around lint confusion between old and new prcred definitions */
  82      -extern void prgetcred();
  83      -#else
  84   82  extern void prgetcred(proc_t *, struct prcred *);
  85      -#endif
  86   83  extern void prgetpriv(proc_t *, struct prpriv *);
  87   84  extern size_t prgetprivsize(void);
  88   85  extern void prgetsecflags(proc_t *, struct prsecflags *);
  89   86  extern int  prnsegs(struct as *, int);
       87 +extern u_offset_t prgetfdinfosize(proc_t *, vnode_t *, cred_t *);
       88 +extern int prgetfdinfo(proc_t *, vnode_t *, struct prfdinfov2 *, cred_t *,
       89 +    list_t *);
  90   90  extern void prexit(proc_t *);
  91   91  extern void prfree(proc_t *);
  92   92  extern void prlwpexit(kthread_t *);
  93   93  extern void prlwpfree(proc_t *, lwpent_t *);
  94   94  extern void prexecstart(void);
  95   95  extern void prexecend(void);
  96   96  extern void prrelvm(void);
  97   97  extern void prbarrier(proc_t *);
  98   98  extern void prstop(int, int);
  99   99  extern void prunstop(void);
 100  100  extern void prnotify(struct vnode *);
 101  101  extern void prstep(klwp_t *, int);
 102  102  extern void prnostep(klwp_t *);
 103  103  extern void prdostep(void);
 104  104  extern int  prundostep(void);
 105  105  extern int  prhasfp(void);
 106  106  extern int  prhasx(proc_t *);
 107  107  extern caddr_t prmapin(struct as *, caddr_t, int);
 108  108  extern void prmapout(struct as *, caddr_t, caddr_t, int);
 109  109  extern int  pr_watch_emul(struct regs *, caddr_t, enum seg_rw);
 110  110  extern void pr_free_watched_pages(proc_t *);
 111  111  extern int  pr_allstopped(proc_t *, int);
 112  112  #if defined(__sparc)
 113  113  struct _gwindows;
 114  114  extern  int     prnwindows(klwp_t *);
 115  115  extern  void    prgetwindows(klwp_t *, struct _gwindows *);
 116  116  #if defined(__sparcv9) /* 32-bit adb macros should not see these defs */
 117  117  extern  void    prgetasregs(klwp_t *, asrset_t);
 118  118  extern  void    prsetasregs(klwp_t *, asrset_t);
 119  119  #endif /* __sparcv9 */
 120  120  #endif  /* __sparc */
 121  121  #if defined(__x86)
 122  122  struct  ssd;
 123  123  extern  int     prnldt(proc_t *);
 124  124  extern  void    prgetldt(proc_t *, struct ssd *);
 125  125  #endif  /* __x86 */
 126  126  
 127  127  #ifdef _SYSCALL32_IMPL
 128  128  struct prfpregset32;
 129  129  struct pstatus32;
 130  130  struct lwpstatus32;
 131  131  struct psinfo32;
 132  132  struct lwpsinfo32;
 133  133  extern void prgetstatus32(proc_t *, struct pstatus32 *, zone_t *);
 134  134  extern void prgetlwpstatus32(kthread_t *, struct lwpstatus32 *, zone_t *);
 135  135  extern void prgetpsinfo32(proc_t *, struct psinfo32 *);
 136  136  extern void prgetlwpsinfo32(kthread_t *, struct lwpsinfo32 *);
 137  137  extern void lwpsinfo_kto32(const struct lwpsinfo *src, struct lwpsinfo32 *dest);
 138  138  extern void psinfo_kto32(const struct psinfo *src, struct psinfo32 *dest);
 139  139  extern void prgetprfpregs32(klwp_t *, struct prfpregset32 *);
 140  140  #if defined(__sparc)
 141  141  struct gwindows32;
 142  142  void            prgetwindows32(klwp_t *, struct gwindows32 *);
 143  143  #endif /* __sparc */
 144  144  #endif  /* _SYSCALL32_IMPL */
 145  145  
 146  146  #endif  /* defined (_KERNEL) */
 147  147  
 148  148  #ifdef  __cplusplus
 149  149  }
 150  150  #endif
 151  151  
 152  152  #endif  /* _SYS_PRSYSTM_H */
  
    | 
      ↓ open down ↓ | 
    53 lines elided | 
    
      ↑ open up ↑ | 
  
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX