/usr/src/usr.bin/vmstat/vmstat.c (FreeBSD-5.1):
Инициализируется массив структур
static struct nlist namelist[] = {
#define X_CPTIME 0
{ "_cp_time" },
#define X_SUM 1
{ "_cnt" },
#define X_BOOTTIME 2
{ "_boottime" },
#define X_HZ 3
{ "_hz" },
#define X_STATHZ 4
{ "_stathz" },
#define X_NCHSTATS 5
{ "_nchstats" },
#define X_INTRNAMES 6
{ "_intrnames" },
#define X_EINTRNAMES 7
{ "_eintrnames" },
#define X_INTRCNT 8
{ "_intrcnt" },
#define X_EINTRCNT 9
{ "_eintrcnt" },
#ifdef notyet
#define X_DEFICIT 10
{ "_deficit" },
#define X_REC 11
{ "_rectime" },
#define X_PGIN 12
{ "_pgintime" },
#define X_XSTATS 13
{ "_xstats" },
#define X_END 14
#else
#define X_END 10
#endif
{ "" },
};
Структура nlist объявляется так (/usr/include/sys/nlist_aout.h) :
struct nlist {
#ifdef _AOUT_INCLUDE_
union {
char *n_name; /* symbol name (in memory) */
long n_strx; /* file string table offset (on disk) */
} n_un;
#else
char *n_name; /* symbol name (in memory) */
int : 8 * (sizeof(long) > sizeof(char *) ?
sizeof(long) - sizeof(char *) : sizeof(char *) - sizeof(long));
#endif
unsigned char n_type; /* type defines */
char n_other; /* ".type" and binding information */
short n_desc; /* used by stab entries */
unsigned long n_value; /* address/value of the symbol */
};
Тогда что такое "{ "_cp_time" }", например? Это совсем не похоже на экземпляр структуры nlist. Ни в одной книге такого нет :-(, блин. В учебниках всё просто ;-)
PS Просьба сильно ногами не пинать. C изучаю недавно, по необходимости
|