merge from open-source master
Change-Id: I414c9479f4f913c777ef18b7ff27e410f49d35b9
This commit is contained in:
commit
e95aad61d8
3 changed files with 27 additions and 2 deletions
|
|
@ -51,6 +51,7 @@
|
|||
#define AID_SDCARD_RW 1015 /* external storage write access */
|
||||
#define AID_VPN 1016 /* vpn system */
|
||||
#define AID_KEYSTORE 1017 /* keystore subsystem */
|
||||
#define AID_USB 1018 /* USB devices */
|
||||
|
||||
#define AID_SHELL 2000 /* adb and debug shell user */
|
||||
#define AID_CACHE 2001 /* cache access */
|
||||
|
|
@ -100,6 +101,7 @@ static struct android_id_info android_ids[] = {
|
|||
{ "sdcard_rw", AID_SDCARD_RW, },
|
||||
{ "vpn", AID_VPN, },
|
||||
{ "keystore", AID_KEYSTORE, },
|
||||
{ "usb", AID_USB, },
|
||||
{ "inet", AID_INET, },
|
||||
{ "net_raw", AID_NET_RAW, },
|
||||
{ "net_admin", AID_NET_ADMIN, },
|
||||
|
|
|
|||
|
|
@ -255,6 +255,7 @@ static struct {
|
|||
const char *name;
|
||||
unsigned flag;
|
||||
} mount_flags[] = {
|
||||
{ "move", MS_MOVE },
|
||||
{ "noatime", MS_NOATIME },
|
||||
{ "nosuid", MS_NOSUID },
|
||||
{ "nodev", MS_NODEV },
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ static struct perms_ devperms[] = {
|
|||
{ "/dev/ts0710mux", 0640, AID_RADIO, AID_RADIO, 1 },
|
||||
{ "/dev/ppp", 0660, AID_RADIO, AID_VPN, 0 },
|
||||
{ "/dev/tun", 0640, AID_VPN, AID_VPN, 0 },
|
||||
{ "/dev/bus/usb/", 0660, AID_ROOT, AID_USB, 1 },
|
||||
{ NULL, 0, 0, 0, 0 },
|
||||
};
|
||||
|
||||
|
|
@ -380,6 +381,7 @@ static void parse_event(const char *msg, struct uevent *uevent)
|
|||
static void handle_device_event(struct uevent *uevent)
|
||||
{
|
||||
char devpath[96];
|
||||
int devpath_ready = 0;
|
||||
char *base, *name;
|
||||
int block;
|
||||
|
||||
|
|
@ -405,7 +407,26 @@ static void handle_device_event(struct uevent *uevent)
|
|||
} else {
|
||||
block = 0;
|
||||
/* this should probably be configurable somehow */
|
||||
if(!strncmp(uevent->subsystem, "graphics", 8)) {
|
||||
if (!strncmp(uevent->subsystem, "usb", 3)) {
|
||||
if (!strcmp(uevent->subsystem, "usb")) {
|
||||
/* This imitates the file system that would be created
|
||||
* if we were using devfs instead.
|
||||
* Minors are broken up into groups of 128, starting at "001"
|
||||
*/
|
||||
int bus_id = uevent->minor / 128 + 1;
|
||||
int device_id = uevent->minor % 128 + 1;
|
||||
/* build directories */
|
||||
mkdir("/dev/bus", 0755);
|
||||
mkdir("/dev/bus/usb", 0755);
|
||||
snprintf(devpath, sizeof(devpath), "/dev/bus/usb/%03d", bus_id);
|
||||
mkdir(devpath, 0755);
|
||||
snprintf(devpath, sizeof(devpath), "/dev/bus/usb/%03d/%03d", bus_id, device_id);
|
||||
devpath_ready = 1;
|
||||
} else {
|
||||
/* ignore other USB events */
|
||||
return;
|
||||
}
|
||||
} else if (!strncmp(uevent->subsystem, "graphics", 8)) {
|
||||
base = "/dev/graphics/";
|
||||
mkdir(base, 0755);
|
||||
} else if (!strncmp(uevent->subsystem, "oncrpc", 6)) {
|
||||
|
|
@ -435,7 +456,8 @@ static void handle_device_event(struct uevent *uevent)
|
|||
base = "/dev/";
|
||||
}
|
||||
|
||||
snprintf(devpath, sizeof(devpath), "%s%s", base, name);
|
||||
if (!devpath_ready)
|
||||
snprintf(devpath, sizeof(devpath), "%s%s", base, name);
|
||||
|
||||
if(!strcmp(uevent->action, "add")) {
|
||||
make_device(devpath, block, uevent->major, uevent->minor);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue