Back to index

glibc  2.9
utmpx.h
Go to the documentation of this file.
00001 /* Structures and definitions for the user accounting database.  GNU version.
00002    Copyright (C) 1997, 1998, 2000, 2001, 2002, 2008
00003    Free Software Foundation, Inc.
00004    This file is part of the GNU C Library.
00005 
00006    The GNU C Library is free software; you can redistribute it and/or
00007    modify it under the terms of the GNU Lesser General Public
00008    License as published by the Free Software Foundation; either
00009    version 2.1 of the License, or (at your option) any later version.
00010 
00011    The GNU C Library is distributed in the hope that it will be useful,
00012    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014    Lesser General Public License for more details.
00015 
00016    You should have received a copy of the GNU Lesser General Public
00017    License along with the GNU C Library; if not, write to the Free
00018    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00019    02111-1307 USA.  */
00020 
00021 #ifndef _UTMPX_H
00022 # error "Never include <bits/utmpx.h> directly; use <utmpx.h> instead."
00023 #endif
00024 
00025 #include <bits/types.h>
00026 #include <sys/time.h>
00027 #include <bits/wordsize.h>
00028 
00029 
00030 #ifdef __USE_GNU
00031 # include <paths.h>
00032 # define _PATH_UTMPX _PATH_UTMP
00033 # define _PATH_WTMPX _PATH_WTMP
00034 #endif
00035 
00036 
00037 #define __UT_LINESIZE       32
00038 #define __UT_NAMESIZE       32
00039 #define __UT_HOSTSIZE       256
00040 
00041 
00042 /* The structure describing the status of a terminated process.  This
00043    type is used in `struct utmpx' below.  */
00044 struct __exit_status
00045   {
00046 #ifdef __USE_GNU
00047     short int e_termination;       /* Process termination status.  */
00048     short int e_exit;              /* Process exit status.  */
00049 #else
00050     short int __e_termination;     /* Process termination status.  */
00051     short int __e_exit;            /* Process exit status.  */
00052 #endif
00053   };
00054 
00055 
00056 /* The structure describing an entry in the user accounting database.  */
00057 struct utmpx
00058 {
00059   short int ut_type;        /* Type of login.  */
00060   __pid_t ut_pid;           /* Process ID of login process.  */
00061   char ut_line[__UT_LINESIZE];     /* Devicename.  */
00062   char ut_id[4];            /* Inittab ID. */
00063   char ut_user[__UT_NAMESIZE];     /* Username.  */
00064   char ut_host[__UT_HOSTSIZE];     /* Hostname for remote login.  */
00065   struct __exit_status ut_exit;    /* Exit status of a process marked
00066                                as DEAD_PROCESS.  */
00067 
00068 /* The fields ut_session and ut_tv must be the same size when compiled
00069    32- and 64-bit.  This allows files and shared memory to be shared
00070    between 32- and 64-bit applications.  */
00071 #if __WORDSIZE == 32
00072   __int64_t ut_session;            /* Session ID, used for windowing.  */
00073   struct
00074   {
00075     __int64_t tv_sec;              /* Seconds.  */
00076     __int64_t tv_usec;             /* Microseconds.  */
00077   } ut_tv;                  /* Time entry was made.  */
00078 #else
00079   long int ut_session;             /* Session ID, used for windowing.  */
00080   struct timeval ut_tv;            /* Time entry was made.  */
00081 #endif
00082   __int32_t ut_addr_v6[4];  /* Internet address of remote host.  */
00083   char __unused[20];        /* Reserved for future use.  */
00084 };
00085 
00086 
00087 /* Values for the `ut_type' field of a `struct utmpx'.  */
00088 #define EMPTY        0      /* No valid user accounting information.  */
00089 
00090 #ifdef __USE_GNU
00091 # define RUN_LVL     1      /* The system's runlevel.  */
00092 #endif
00093 #define BOOT_TIME    2      /* Time of system boot.  */
00094 #define NEW_TIME     3      /* Time after system clock changed.  */
00095 #define OLD_TIME     4      /* Time when system clock changed.  */
00096 
00097 #define INIT_PROCESS 5      /* Process spawned by the init process.  */
00098 #define LOGIN_PROCESS       6      /* Session leader of a logged in user.  */
00099 #define USER_PROCESS 7      /* Normal process.  */
00100 #define DEAD_PROCESS 8      /* Terminated process.  */
00101 
00102 #ifdef __USE_GNU
00103 # define ACCOUNTING  9      /* System accounting.  */
00104 #endif