cmpt_getbynum(3)cmpt_getbynum(3)NAMEcmpt_getbynum(), cmpt_endent(), cmpt_getbyname(), cmpt_getent(),
cmpt_setent() - map compartment name to number or number to name
SYNOPSIS
Parameters
cmpt_name Pointer to a string containing a compartment
name.
cmpt_num Compartment number.
state Pointer to internal state.
Structure Members
The structure is defined in It contains at least the following fields:
DESCRIPTION
Compartments are referenced by strings in configuration files under but
are maintained as numbers internally. The functions and query and
iterate over this database.
Returns the compartment number corresponding to the string spec‐
ified by
cmpt_name.
Returns the compartment name corresponding to
cmpt_num. If the return value is not
NULL, it is the responsibility of the
caller to free the returned value using
See free(3C).
Opens the database connection to allow an iterative search.
Returns a pointer to the next compartment name/number pair from
the database.
The user must not call to release the
memory pointed to by the return value.
Closes the database connection.
Notes
Every call to must be matched with a corresponding call to
RETURN VALUE
returns the following values:
Successful completion.
The function returns a valid compartment number.
Function failed.
is set to indicate the error.
returns the following values:
pointer
Successful completions. Returns a non-null pointer to a
string containing the compartment name.
NULL pointer
Function failed. Returns a null pointer and sets to
indicate the error .
The caller is responsible for freeing the result.
returns the following values:
Successful completion.
Function failed.
is set to indicate the error.
returns the following values:
pointer
Succesaful completions. Returns a non-null pointer to a
structure.
NULL pointer
Function failed or entries are exhausted. In case of an
error, is set to indicate the error.
sets to and returns a null pointer when all entries have been
exhausted.
ERRORS
If any of the following conditions occur, the functions fail and set
Compartment name or number does not exist.
Compartmentalization is not enabled on this system.
The function failed to allocate sufficient memory for its opera‐
tion.
EXAMPLES
Example 1
Get the compartment number associated with a name.
#include <sys/cmpt.h>
void main(int argc, char **argv) {
cmpt_t cmptid;
cmptid = cmpt_getbyname("INIT");
if (cmptid != -1) {
printf("\nCompartment id : %d\n", cmptid);
} else {
printf("\nError getting compartment number\n");
}
}
Example 2
Get the compartment name associated with a number.
#include <sys/cmpt.h>
void main(int argc, char **argv) {
char *name;
name = cmpt_getbynum((cmpt_t)2);
if (name) {
printf("\nCompartment name : %s\n", name);
free(name);
} else {
printf("\nError getting compartment name\n");
}
}
Example 3
Iterate through compartment mapping entries.
#include <errno.h>
#include <sys/cmpt.h>
void main(int argc, char **argv) {
struct cmpt_pair *pair;
struct cmpt_state *state
if (cmpt_setent(&state) != 0) {
perror("cmpt_setent failed");
exit(1);
}
/* get entries until a NULL returned */
while ( pair = cmpt_getent(&state) )
{
printf("\nCompartment Nnumber : %d Name : %s\n",
pair->cmpt_num, pair->cmpt_name);
}
if (errno == 0)
{
printf("\nAll Entries printed\n");
} else {
printf("\nError getting compartment entry\n");
}
cmpt_endent();
}
DEPENDENCIES
These functions are a part of the library, which can be linked with
your executable with the option.
SEE ALSOcompartments(4), compartments(5).
cmpt_getbynum(3)