init
#define ANDROID_SOCKET_DIR "/dev/socket"
#define PROP_SERVICE_NAME "property_service"
#define PROP_FILENAME "/dev/__properties__"
static char property_filename[PATH_MAX] = PROP_FILENAME;
---------------------------------------------------------------
init进程属性服务内存映射
static int map_prop_area_rw()
const int fd = open(property_filename,
/dev/__properties__
--------------------------------------------------------------
bionic内存映射
static int map_prop_area()
int fd = open(property_filename, O_CLOEXEC | O_NOFOLLOW | O_RDONLY);
const int map_result = map_fd_ro(fd);
/dev/__properties__
-----------------------------------------------------------------
socket server通讯连接
void start_property_service() {
property_set_fd = create_socket(PROP_SERVICE_NAME, SOCK_STREAM | SOCK_CLOEXEC | SOCK_NONBLOCK,
0666, 0, 0, NULL);
}
snprintf(addr.sun_path, sizeof(addr.sun_path), ANDROID_SOCKET_DIR"/%s", name);
/dev/socket/property_service
-------------------------------------------------------------
socket client通讯连接
static int send_prop_msg(const prop_msg *msg)
strlcpy(addr.sun_path, property_service_socket, sizeof(addr.sun_path));
static const char property_service_socket[] = "/dev/socket/" PROP_SERVICE_NAME;
/dev/socket/property_service

浙公网安备 33010602011771号