sub-rotina knlist
Propósito
Traduzem nomes para endereços no sistema de execução.
Sintaxe
#include <nlist.h>
int knlist( NList, NumberOfElements, Size )
struct nlist *NList;
int NumberOfElements;
int Size;Descrição
O subroutine knlist permite que um programa olhe para cima os endereços de símbolos exportados pelo kernel e extensões do kernel.
O campo n_name na estrutura nlist especifica o nome de um símbolo para o qual o endereço é solicitado. Se o símbolo for encontrado, seu endereço é salvo no campo n_value , e os campos restantes não são modificados. Se o símbolo não for encontrado, todos os campos, diferente de n_name, são configurados para 0.
rc = knlist((struct nlist *)Nlist64,
NumberOfElements,
sizeof(structure nlist64));
As estruturas nlist e nlist64 incluem os seguintes campos:
| Item | Descrição |
|---|---|
| char *n_name | Especifica o nome do símbolo para o qual o endereço deve ser recuperado. |
| long n_value | O endereço do símbolo, preenchido pela subroutine knlist . Este campo está incluído na estrutura nlist . |
long long n_value |
O endereço do símbolo, preenchido pela subroutine knlist . Este campo está incluído na estrutura nlist64 . |
#undef n_name- Se ambos os arquivos nlist.h e netdb.h forem incluídos, o arquivo netdb.h deverá ser incluído antes do arquivo nlist.h para evitar um conflito com o membro da estrutura n_name . Da mesma forma, se os arquivos a.out.h e netdb.h forem incluídos, o arquivo netdb.h deverá ser incluído antes do arquivo a.out.h para evitar um conflito com a estrutura n_name .
- Se o arquivo netdb.h e o arquivo nlist.h ou syms.h forem incluídos, on_namecampo será definido como_n._n_name. Esta definição permite que você acesse on_namecampo na estrutura nlist ou syment . Se precisar acessar on_namecampo na estrutura netente , desdefinir on_namecampo inserindo:
antes de acessar on_namecampo na estrutura netente . Se precisar acessar on_namecampo em uma estrutura syment ou nlist após desdefinit-lo, redefinir on_namecampo com:#undef n_name#define n_name _n._n_name
Parâmetros
| Item | Descrição |
|---|---|
| NLIST | Aponta para uma matriz de estruturas nlist ou nlist64 . |
| NumberOfElements | Especifica o número de estruturas na matriz de estruturas nlist ou nlist64 . |
| Tamanho | Especifica o tamanho de cada estrutura. Os únicos valores permitidos são sizeof(struct
nlist) ou sizeof(struct nlist64). |
Valores De Retorno
Após a conclusão bem-sucedida, a subroutine knlist retorna um valor de 0. Caso contrário, um valor de -1 é retornado e a variável errno é definida para indicar o erro.
Códigos De Erro
A subroutine knlist falha quando um dos seguintes é verdadeiro:
| Item | Descrição |
|---|---|
| EINVAL | Os parâmetros NumberOfElements são menores que 1 ou o parâmetro Size não é ' sizeof(struct nlist) nem ' sizeof(struct nlist64). |
| EFAULT | O parâmetro NLista não é um endereço válido. Um ou mais símbolos na matriz especificada pelo parâmetro Nlist não foram encontrados. O endereço de um dos símbolos não se encaixa no campo n_valor . Isso só é possível se o caller for um programa de 32-bit bits e o parâmetro Size for |