#include #include #include #include #include #include #include #include extern const char *device_root; int hw_device_open(const char *path, size_t path_len) { int sock; if ((sock = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) { perror(NULL); exit(-1); } struct sockaddr_un address; address.sun_family = AF_UNIX; snprintf(address.sun_path, sizeof(address.sun_path), "%s%.*s", device_root, path_len, path); if (connect(sock, (struct sockaddr *)&address, sizeof(address)) != 0) { perror(NULL); exit(-1); } return sock; }