 |
Index for Section 3 |
|
 |
Alphabetical listing for I |
|
 |
Bottom of page |
|
idsetops(3)
NAME
idsetops, idaddset, idandset, idcopyset, idcountset, iddelset, iddiffset,
idemptyset, idfillset, idisemptyset, idismember, idorset, idsetcreate,
idsetdestroy, idxorset - Perform operations on ID sets (libc library)
SYNOPSIS
#include <idset.h>
int idaddset(
idset_t set,
idid_t member_id );
int idandset(
idset_t set_src1,
idset_t set_src2,
idset_t set_dst );
int idcopyset(
idset_t set_src,
idset_t set_dst );
int idcountset(
idset_t set );
int iddelset(
idset_t set,
idid_t member_id );
int iddiffset(
idset_t set_src1,
idset_t set_src2,
idset_t set_dst );
int idemptyset(
idset_t set );
int idfillset(
idset_t set );
int idisemptyset(
idset_t set );
int idismember(
idset_t set,
idid_t member_id );
int idorset(
idset_t set_src1,
idset_t set_src2,
idset_t set_dst );
int idsetcreate(
idset_t *set,
int max_id_val );
int idsetdestroy(
idset_t *set );
int idxorset(
idset_t set_src1,
idset_t set_src2,
idset_t set_dst );
PARAMETERS
max_id_val
Specifies the largest member_id value.
member_id
Identifies a member of an ID set.
set Specifies or points to an ID set.
set_dst
Specifies an ID set that is being copied to or that is the result of a
logical OR, XOR, or AND operation on two other ID sets.
set_src[n]
Specifies a ID set that is being copied to another ID set or that is
part of a logical OR, XOR, or AND operation with another ID set.
DESCRIPTION
The ID set operation primitives manipulate sets of member IDs by operating
on objects (of type idset_t) that are created by idsetcreate(). Unlike a
CPU set or RAD set, whose members are CPU or RAD identifiers, an ID set is
generic and can be created for any type of identifier (process, thread,
file, and so forth). The max_id_val argument specifies the maximum value
for any member_id, as appropriate for the type of identifier contained by
the set.
The idsetcreate() function allocates, and sets to empty, an ID set pointed
to by set.
The idsetdestroy() function releases the memory that was obtained by
idsetcreate() for the specified ID set pointed to by set.
The idcountset() function returns the number of members in the ID set
specified by set.
The idemptyset() function initializes the ID set specified by set, such
that no members are included in the set.
The idfillset() function initializes the ID set specified by set, such that
all members that are currently configured in the caller's partition are
included in the set.
The idismember() function tests whether the ID set member specified by the
value of member_id is a member of the ID set specified by set.
The idisemptyset() function tests whether the ID set specified by the set
is empty.
The idcopyset() function copies the contents of the ID set specified by
set_src to the ID set specified by set_dst.
The idaddset() and iddelset() functions respectively add or delete the
members specified by the value of member_id to or from the ID set specified
by set.
The idandset(), idorset(), and idxorset() functions perform a logical AND,
OR, or XOR operation, respectively, on the ID sets specified by set_src1
and set_src2, storing the result in the ID set specified by set_dst.
The iddiffset() function finds the logical difference between the ID sets
specified by set_src1 and set_src2, storing the result in the ID set
specified by set_dst. (The result is made up of members that are included
in set_src1 but not in set_src2.)
RETURN VALUES
These functions return the following values:
0 Success (returned by all functions).
For idisemptyset() and idismember() only, 0 also means the condition
being tested is false; that is, the specified ID set is not empty or
does not contain the specified member.
1 Success (returned by idisemptyset() and idismember()only). This return
value also means the condition being tested is true; that is, the
specified ID set is empty or contains the specified member.
-1 Failure (returned by all functions). In this case, errno is set to
indicate the error.
ERRORS
The idaddset(), idandset(), idcopyset(), idcountset(), iddelset(),
iddiffset(), idemptyset(), idfillset(), idisemptyset(), idismember(),
idorset(), and idxorset() functions set errno to the following value for
the corresponding condition:
[EINVAL]
The value of a set or set_* argument is invalid (possibly is not a ID
set created by idsetcreate()).
The idsetcreate() and idsetdestroy() functions set errno to one of the the
following values for the corresponding condition:
[EFAULT]
The address of the specified ID set is invalid.
[ENOMEM]
For idsetcreate() only, no memory could be allocated for the specified
ID set.
If the idaddset(), iddelset(), and idismember() functions fail, they set
errno to the following value for the reason specified:
[EDOM]
The value of member_id is an invalid or unsupported ID identifier.
EXAMPLES
The following example demonstrates a variety of ID set operations. This
program arbitrarily specifies INT_MAX for the idsetcreate() function's
max_id_val argument. INT_MAX is the largest value currently supported by
the idid_t type and would result in a very large ID index structure. For
set operations on a specific type of ID, such as a process ID, you would
specify the largest expected value for that type of identifier. Creating an
index structure that can access larger ID values than will occur on the
system wastes memory.
#include <idset.h>
int
main()
{
idset_t idset, idset2;
/* Create idsets - initialized as empty */
idsetcreate(&idset, INT_MAX);
idsetcreate(&idset2, INT_MAX);
/* demonstrate idset operations */
/* add id 0 to idset */
if (idaddset(idset, 0) == -1) {
perror("idaddset");
return 0;
}
/* copy idset to idset2 */
if (idcopyset(idset, idset2) == -1) {
perror("idcopyset");
return 0;
}
if (idaddset(idset, 1) == -1) {
/* add id 1 to idset */
perror("idaddset");
return 0;
}
/* difference of idset and idset2, store in idset */
if (iddiffset(idset, idset2, idset) == -1) {
perror("iddiffset");
return 0;
}
/* Enumerate idset. */
while (1) {
idid_t id;
int flags = SET_CURSOR_CONSUME;
id_cursor_t id_cursor = SET_CURSOR_INIT;
id = id_foreach(idset, flags, &id_cursor);
if (id == ID_NONE) {
printf("\n");
break;
} else {
printf("%3d ", id);
}
}
/* Destroy idset */
idsetdestroy(&idset);
idsetdestroy(&idset2);
return 0;
}
SEE ALSO
Functions: id_foreach(3)
 |
Index for Section 3 |
|
 |
Alphabetical listing for I |
|
 |
Top of page |
|