注册事件(REGISTER_FOR_EVENT):
在初始化的时候去注册一个事件。包括注册事件进程ID ,q序列号,初始化事件定义为DM_EVENT_CMD_HELLO。注册的id和q都是关于进程的 ,是为了作为客户端的dmevrntd进程在获取到动态连接库的调用之后,才事件有真正的事件注册,即:
int _register_for_event(struct message_data *message_data);
函数主要参数struct message_data *message_data,传递了
struct message_data {
char *id;
char *dso_name; /* Name of DSO. */
char *device_uuid; /* Mapped device path. */
char *events_str; /* Events string as fetched from message. */
enum dm_event_mask events_field; /* Events bitfield. */
char *timeout_str;
uint32_t timeout_secs;
struct dm_event_daemon_message *msg; /* Pointer to message buffer. */
};
events_str表示一个事件,比如是DM_EVENT_ERROR_MASK事件标志。 dm_event_mask events_field表示事件的某一个,具体举例子比如事件 dm_event_mask events_field的值等于
DM_EVENT_ERROR_MASK | DM_EVENT_TIMEOUT。
该函数实现的功能是注册一个事件设备用于记录事件的标志,启用一个计时线程,用于监控设备的元数据和数据的读写情况和百分比。调用到的函数有
_fill_device_data(thread_new)获取线程需要的设备名device_name,主次设备号&#