Android培训班(19)

init初始化进程里,设备初始化是怎么进行的呢?如果要了解这方面,就需要仔细分析下面的代码,如下:

#001 int device_init(void)

#002 {

#003 suseconds_t t0, t1;

#004 int fd;

#005

#006 fd = open_uevent_socket();

#007 if(fd < 0)

#008 return -1;

这段代码是调用函数open_uevent_socket来创建一个用户事件空间的socket

#009

#010 fcntl(fd, F_SETFD, FD_CLOEXEC);

#011 fcntl(fd, F_SETFL, O_NONBLOCK);

这段代码是设置socket的属性,FD_CLOEXEC用来设置文件的close-on-exec状态标准。在exec()调用后,close-on-exec标志为0的情况,此文件不被关闭。非零则在exec()后被关闭。默认close-on-exec状态为0,需要通过FD_CLOEXEC设置。O_NONBLOCK设置这个socket是异步的通讯方式。

#012

#013 t0 = get_usecs();

这行代码是用来获取当前用户的时间。

#014 coldboot(fd, "/sys/class");

#015 coldboot(fd, "/sys/block");

#016 coldboot(fd, "/sys/devices");

这段代码是用来遍历所有在init进程前已经创建的设备,并找到设备的事件文件发送事件通知。

#017 t1 = get_usecs();

这行代码是用来获取当前用户的时间。

#018

#019 log_event_print("coldboot %ld uS\n", ((long) (t1 - t0)));

这行代码是用来打印输出冷启动的时间是多少秒。

#020

#021 return fd;

#022 }

#023

你可能感兴趣的:(android,socket,F#)