用户空间 system/core/libcutils/uevent.c
int uevent_open_socket(int buf_sz, bool passcred)
{
struct sockaddr_nl addr;
int on = passcred;
int s;
memset(&addr, 0, sizeof(addr));
addr.nl_family = AF_NETLINK;
addr.nl_pid = getpid();
addr.nl_groups = 0xffffffff;
s = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
//PF_NETLINK:netlink套接字具有其他各种方法所没有的特征,它是异步、支持多播的、而且使用简单起来相当简单。
//SOCK_DGRAM: