Files
libgtop/libproc/psdata.h
1998-07-18 16:15:56 +00:00

104 lines
2.6 KiB
C

/*
* psdata.h
*
* Jeffrey A. Uphoff <juphoff@nrao.edu>, 1995, 1996.
* Michael K. Johnson.
* Bruno Lankester.
* (And others I'm sure...)
*
*/
/*
* Capabilities are for reading system images and producing maps for
* WCHAN output.
*
* AOUT_CAPABLE and ELF_CAPABLE may have 32-bit word size limitations
* and have only been tested by the maintainer on Intel systems. They
* are retained in the source tree in case they are useful; they are
* intended to be generally deprecated.
*
* BFD_CAPABLE should work on any system with BFD.
*
* Set the capabilities in the top-level Makefile.
*/
#if defined(ELF_CAPABLE)
# define ELF_OBJECT 1
# define ELF_FUNC 2
#endif
#include <sys/types.h>
#include <linux/utsname.h>
#define PSDATABASE "/etc/psdatabase"
struct dbtbl_s {
off_t off; /* offset in psdatabase */
int nsym; /* # symbols */
int size; /* size of array + strings */
};
/*
* header of psdatabase
*/
struct psdb_hdr {
/* Current procps package version goes here. kmemps doesn't like this. */
char magic[32];
/*
* These are not functional--they only reside in the database for
* informational purposes (i.e. if you want to look at the raw
* database and see what kernel it's for).
*/
char uts_release[__NEW_UTS_LEN];
char uts_version[__NEW_UTS_LEN];
/*
* Again, this is not functional, it's just there for information: it
* shows the path to the uncompressed kernel image that was used to
* generate this database.
*/
char sys_path[128];
/* List of all functions. */
struct dbtbl_s fncs;
/*
* This is currently only used to look up system_utsname while
* psupdate is building the database--it really should be phased out!
*/
/* List of all bss and data symbols. */
struct dbtbl_s vars;
/*
* The list of tty names that kmemps likes/uses in no longer present
* in the procps psdatabase--it was never being built by procps'
* psupdate anyway, so I removed the entry from the database header.
*/
};
struct sym_s {
unsigned long addr; /* core address in kernel */
int name; /* offset from strings ptr */
};
struct tbl_s {
struct sym_s *tbl;
int nsym;
char *strings; /* ptr to start of strings */
};
extern struct psdb_hdr db_hdr;
extern struct tbl_s fncs, vars;
int read_tbl (struct dbtbl_s *, struct tbl_s *);
void *xmalloc (unsigned int);
void *xrealloc (void *, unsigned int);
#define MLSEEK(FD, WHERE, WHENCE, ERROR)\
if (lseek ((FD), (WHERE), (WHENCE)) == -1) {\
perror ((ERROR));\
exit (errno);\
}
#define MREAD(FD, WHAT, SIZE, ERROR)\
if (read ((FD), (WHAT), (SIZE)) != (SIZE)) {\
perror ((ERROR));\
exit (errno);\
}