URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2105
[ Назад ]

Исходное сообщение
"Ламерский вопрос, но..."

Отправлено Йоклмн , 23-Сен-03 13:17 

/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 изучаю недавно, по необходимости


Содержание

Сообщения в этом обсуждении
"Ламерский вопрос, но..."
Отправлено _Павел , 23-Сен-03 14:38 
Очевидно, это n_name. Если же "_AOUT_INCLUDE_", то n_name либо n_strx - это уж как охота использовать.
Остальные поля  структур остаются неинициализированными (либо забиваются нулями).

PS читайте книжки - это, действительно, ламерский вопрос.


"Ламерский вопрос, но..."
Отправлено Йоклмн , 23-Сен-03 15:13 
>Очевидно, это n_name. Если же "_AOUT_INCLUDE_", то n_name либо n_strx - это
>уж как охота использовать.
>Остальные поля  структур остаются неинициализированными (либо забиваются нулями).
>
>PS читайте книжки - это, действительно, ламерский вопрос.

Спасибо, всё понял (пошёл читать книжки :)