This interface is a way of giving names to sets of attribute values for process trackers. For example, a Linux process tracker might have a few integer attributes that store memory offsets that differ between different versions of the operating system. Rather than forcing the user to look up the values appropriate to her version and setting the attributes manually, the settings for the different supported versions can be given names.
typedef struct { attr_value_t (*settings_id_list)(void); const char *(*describe_settings)(const char *NOTNULL settings_id); int (*use_settings)(conf_object_t *NOTNULL tracker, const char *NOTNULL settings_id); } tracker_settings_interface_t; #define TRACKER_SETTINGS_INTERFACE "tracker_settings"
settings_id_list returns a list of strings. Each string is the ID of a set of attributes (for example "linux-4.7.11").
describe_settings returns a human-readable description of a settings ID (for example, "linux-4.7.11" might give "Linux 4.7.11").
use_settings sets the attributes to the values in the named set. It returns true on success, false on error (the typical error would be an invalid settings ID name).