NAME | SYNOPSIS | API RESTRICTIONS | DESCRIPTION | RETURN VALUES | ERRORS | ATTRIBUTES
#include <blackbox/chBlackBox.h>int bbProdids(KnBBProdid *oldids, int *out, KnBBProdid *newids, int *in);
The function or functions documented here may not be used safely in all application contexts with all APIs provided in the ChorusOS 5.0 product.
See API(5FEA) for details.
bbProdids() gets or sets, or gets and sets, the list of producers registered to use the filter list and the filtered severity bitmap on this node.
If oldids is not the NULL pointer, it will be filled in with a list that specifies which producers are using the fine-grained filters.
If newids is not the NULL pointer, the fine-grained filters will be set to the value of the filters pointed to by newids.
The argument oldids is an array of out KnBBProdIds; the argument out is the number of KnBBProdIds passed in oldids.
The argument newids is an array of in KnBBProdIds; the argument in is the number of KnBBProdIds passed in newids.
The members of the KnBBProdId structure are:
name of the process/actor
ID of the process/actor (e.g pid)
The bbp_pname member is the name of the producer. This is the basename of the first argument that was passed to one of the exec() functions, after traversing any symlinks.
If bbp_pname is a NULL pointer, and the PID is set to -1, the events originate in the microkernel. In this case, traces are only filtered by the global mask severity.
There are multiple wild card types that can be returned in a KnBBProdId:
If the bbp_pid member is equal to BB_ALL_PIDS, and the bbp_pname is not BB_ALL_PROD, the fine-grained filters are enabled for all producers with this bbp_pname.
If the bbp_pid member is equal to BB_ALL_PIDS, and the bbp_pname is equal to BB_ALL_PROD, the fine-grained filters are enabled for all producers on the system.
If the bbp_pname is equal to BB_ALL_PROD, and a specific PID is given in the bbp_pid member, the fine-grained filters are enabled for that PID, regardless of the producer's name.
When calling bbProdids(), nids should point to the number of KnBBProdIds passed in oldids. On successful return, out will be updated with the number of KnBBProdIds needed to construct a full list of producers that are using the fine-grained filters. The caller can determine this number by passing a NULL ids value and a valid nids pointer, e.g. the address of an integer with value 0.
bbProdids() may not return the exact same list that was passed in the most recent call to bb_setprodids(), but it will be an equivalent list.
bbProdids() does not add to or modify the current list of producers using the fine-grained filters; it replaces it entirely.
If multiple conflicting producer identifiers are passed in at once, the identifier with higher array index will take precedence.
If a producer has fine-grained filtering enabled because it matches one of the wild cards (a producer name with BB_ALL_PIDS, or just with BB_ALL_PROD), any further producers created with that name will also have fine-grained filtering enabled. However, if a producer name is registered along with a specific PID, and that producer dies, future producers with that PID won't have fine-grained filtering enabled unless it is enabled explicitly.
Calling bbProdids(NULL, NULL, NULL, 0) resets the list of producers.
The maximum defined number of producers when bbProdids() is called is blackboxMaxPidNb. This value is also accessible via sysgetconf(). Any filter that specifies a PID which doesn't match an existing producer will be ignored.
bbProdids() returns K_OK on success, otherwise a negative error code is returned.
The system is out of resources
Some of the arguments provided are outside the caller's address space
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
NAME | SYNOPSIS | API RESTRICTIONS | DESCRIPTION | RETURN VALUES | ERRORS | ATTRIBUTES