1 .\"
   2 .\" This file and its contents are supplied under the terms of the
   3 .\" Common Development and Distribution License ("CDDL"), version 1.0.
   4 .\" You may only use this file in accordance with the terms of version
   5 .\" 1.0 of the CDDL.
   6 .\"
   7 .\" A full copy of the text of the CDDL should have accompanied this
   8 .\" source.  A copy of the CDDL is also available via the Internet at
   9 .\" http://www.illumos.org/license/CDDL.
  10 .\"
  11 .\"
  12 .\" Copyright 2015 Joyent, Inc.
  13 .\"
  14 .Dd May 11, 2016
  15 .Dt PLDT 3PROC
  16 .Os
  17 .Sh NAME
  18 .Nm Pldt ,
  19 .Nm proc_get_ldt
  20 .Nd obtain local descriptor table of a process
  21 .Sh LIBRARY
  22 .Lb libproc
  23 .Sh SYNOPSIS
  24 .In libproc.h
  25 .Ft int
  26 .Fo Pldt
  27 .Fa "struct ps_prochandle *P"
  28 .Fa "struct ssd *pldt"
  29 .Fa "int nldt"
  30 .Fc
  31 .Ft int
  32 .Fo proc_get_ldt
  33 .Fa "pid_t pid"
  34 .Fa "struct ssd *pldt"
  35 .Fa "int nldt"
  36 .Fc
  37 .Sh DESCRIPTION
  38 The
  39 .Fn Pldt
  40 function reads the local descriptor table (LDT) of the process handle
  41 .Fa P
  42 into the buffer
  43 .Fa pldt .
  44 Up to
  45 .Fa nldt
  46 entries will be read.
  47 .Pp
  48 If either
  49 .Fa pldt
  50 is
  51 .Dv NULL
  52 or
  53 .Fa nldt
  54 is
  55 .Fa 0 ,
  56 then rather than filling in
  57 .Fa pldt ,
  58 only the number of entries currently in the LDT is returned.
  59 .Pp
  60 The buffer
  61 .Fa pldt
  62 should contain sufficient space for
  63 .Fa nldt
  64 entries.
  65 For example, callers could allocate space as:
  66 .Pp
  67 .Dl pldt = malloc(sizeof (struct ssd) * nldt);
  68 .Pp
  69 For more information on the LDT and the
  70 .Sy struct ssd ,
  71 see
  72 .Xr proc 4 .
  73 .Pp
  74 The
  75 .Fn proc_get_ldt
  76 function is similar to the
  77 .Fn Pldt
  78 function; however, rather than reading from a process handle, it reads
  79 the
  80 .Sy ldt
  81 file from the /proc file system for the process
  82 .Fa pid .
  83 .Sh RETURN VALUES
  84 Upon successful completion, the
  85 .Fn Pldt
  86 and
  87 .Fn proc_get_ldt
  88 functions return the number of LDT entries written to
  89 .Fa pldt .
  90 If
  91 .Fa pldt
  92 is
  93 .Dv NULL
  94 or
  95 .Fa nldt
  96 is zero, then no data will be written.
  97 Otherwise,
  98 .Sy -1
  99 is returned.
 100 The
 101 .Fn Pldt
 102 function sets
 103 .Sy errno
 104 to indicate the error that occurred.
 105 .Sh ERRORS
 106 For a full list of possible errors see the
 107 .Sy DIAGNOSTICS
 108 section in
 109 .Xr proc 4 .
 110 .Pp
 111 The
 112 .Fn Pldt
 113 function will fail if:
 114 .Bl -tag -width Er
 115 .It Er ENODATA
 116 No LDT information is available in the process handle
 117 .Fa P .
 118 .El
 119 .Sh ARCHITECTURE
 120 The
 121 .Fn Pldt
 122 and
 123 .Fn proc_get_ldt
 124 functions are only available on
 125 .Sy x86
 126 platforms.
 127 .Sh INTERFACE STABILITY
 128 .Sy Uncommitted
 129 .Sh MT-LEVEL
 130 See
 131 .Sy LOCKING
 132 in
 133 .Xr libproc 3LIB .
 134 .Sh SEE ALSO
 135 .Xr libproc 3LIB ,
 136 .Xr proc 4