1
2/*--------------------------------------------------------------------*/
3/*--- Process-related libc stuff               pub_tool_libcproc.h ---*/
4/*--------------------------------------------------------------------*/
5
6/*
7   This file is part of Valgrind, a dynamic binary instrumentation
8   framework.
9
10   Copyright (C) 2000-2013 Julian Seward
11      jseward@acm.org
12
13   This program is free software; you can redistribute it and/or
14   modify it under the terms of the GNU General Public License as
15   published by the Free Software Foundation; either version 2 of the
16   License, or (at your option) any later version.
17
18   This program is distributed in the hope that it will be useful, but
19   WITHOUT ANY WARRANTY; without even the implied warranty of
20   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21   General Public License for more details.
22
23   You should have received a copy of the GNU General Public License
24   along with this program; if not, write to the Free Software
25   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
26   02111-1307, USA.
27
28   The GNU General Public License is contained in the file COPYING.
29*/
30
31#ifndef __PUB_TOOL_LIBCPROC_H
32#define __PUB_TOOL_LIBCPROC_H
33
34#include "pub_tool_basics.h"   // VG_ macro
35#include "pub_tool_vki.h"      // vki_rlimit
36
37/* ---------------------------------------------------------------------
38   Command-line and environment stuff
39   ------------------------------------------------------------------ */
40
41/* Client environment. */
42extern HChar** VG_(client_envp);
43
44/* Looks up VG_(client_envp) */
45extern HChar* VG_(getenv) ( const HChar* name );
46
47/* Path to all our library/aux files */
48extern const HChar *VG_(libdir);
49
50// The name of the LD_PRELOAD-equivalent variable.  It varies across
51// platforms.
52extern const HChar* VG_(LD_PRELOAD_var_name);
53
54/* ---------------------------------------------------------------------
55   Important syscalls
56   ------------------------------------------------------------------ */
57
58extern Int  VG_(waitpid)( Int pid, Int *status, Int options );
59extern Int  VG_(system) ( const HChar* cmd );
60extern Int  VG_(fork)   ( void);
61extern void VG_(execv)  ( const HChar* filename, HChar** argv );
62
63/* ---------------------------------------------------------------------
64   Resource limits and capabilities
65   ------------------------------------------------------------------ */
66
67extern Int VG_(getrlimit) ( Int resource, struct vki_rlimit *rlim );
68extern Int VG_(setrlimit) ( Int resource, const struct vki_rlimit *rlim );
69extern Int VG_(prctl) (Int option,
70                       ULong arg2, ULong arg3, ULong arg4, ULong arg5);
71
72/* ---------------------------------------------------------------------
73   pids, etc
74   ------------------------------------------------------------------ */
75
76extern Int VG_(gettid)  ( void );
77extern Int VG_(getpid)  ( void );
78extern Int VG_(getppid) ( void );
79extern Int VG_(getpgrp) ( void );
80extern Int VG_(geteuid) ( void );
81extern Int VG_(getegid) ( void );
82
83/* ---------------------------------------------------------------------
84   Timing
85   ------------------------------------------------------------------ */
86
87// Returns the number of milliseconds passed since the progam started
88// (roughly;  it gets initialised partway through Valgrind's initialisation
89// steps).
90extern UInt VG_(read_millisecond_timer) ( void );
91
92/* ---------------------------------------------------------------------
93   atfork
94   ------------------------------------------------------------------ */
95
96typedef void (*vg_atfork_t)(ThreadId);
97extern void VG_(atfork)(vg_atfork_t pre, vg_atfork_t parent, vg_atfork_t child);
98
99
100#endif   // __PUB_TOOL_LIBCPROC_H
101
102/*--------------------------------------------------------------------*/
103/*--- end                                                          ---*/
104/*--------------------------------------------------------------------*/
105