Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 780a71e7 authored by Tom Cherry's avatar Tom Cherry
Browse files

ueventd: move subsystem logic from code to ueventd.rc

Test: Boot bullhead
Test: Boot sailfish, observe no boot time regression
Test: init unit tests

Change-Id: I690137b584fcc2b9cd2dd932a2678f75a56d6737
parent e4e4777f
Loading
Loading
Loading
Loading
+7 −34
Original line number Diff line number Diff line
@@ -679,7 +679,6 @@ static void mkdir_recursive_for_devpath(const char *devpath)

static void handle_generic_device_event(struct uevent *uevent)
{
    const char *base;
    const char *name;
    char devpath[DEVPATH_LEN] = {0};

@@ -735,39 +734,13 @@ static void handle_generic_device_event(struct uevent *uevent)
             /* ignore other USB events */
             return;
         }
     } else if (!strncmp(uevent->subsystem, "graphics", 8)) {
         base = "/dev/graphics/";
         make_dir(base, 0755);
     } else if (!strncmp(uevent->subsystem, "drm", 3)) {
         base = "/dev/dri/";
         make_dir(base, 0755);
     } else if (!strncmp(uevent->subsystem, "oncrpc", 6)) {
         base = "/dev/oncrpc/";
         make_dir(base, 0755);
     } else if (!strncmp(uevent->subsystem, "adsp", 4)) {
         base = "/dev/adsp/";
         make_dir(base, 0755);
     } else if (!strncmp(uevent->subsystem, "msm_camera", 10)) {
         base = "/dev/msm_camera/";
         make_dir(base, 0755);
     } else if(!strncmp(uevent->subsystem, "input", 5)) {
         base = "/dev/input/";
         make_dir(base, 0755);
     } else if(!strncmp(uevent->subsystem, "mtd", 3)) {
         base = "/dev/mtd/";
         make_dir(base, 0755);
     } else if(!strncmp(uevent->subsystem, "sound", 5)) {
         base = "/dev/snd/";
         make_dir(base, 0755);
     } else
         base = "/dev/";
     auto links = get_character_device_symlinks(uevent);
    } else {
        snprintf(devpath, sizeof(devpath), "/dev/%s", name);
    }

     if (!devpath[0])
         snprintf(devpath, sizeof(devpath), "%s%s", base, name);
    auto links = get_character_device_symlinks(uevent);

     handle_device(uevent->action, devpath, uevent->path, 0,
             uevent->major, uevent->minor, links);
    handle_device(uevent->action, devpath, uevent->path, 0, uevent->major, uevent->minor, links);
}

static void handle_device_event(struct uevent *uevent)
+33 −1
Original line number Diff line number Diff line
subsystem adf
    devname uevent_devname

subsystem graphics
    devname uevent_devpath
    dirname /dev/graphics

subsystem drm
    devname uevent_devpath
    dirname /dev/dri

subsystem oncrpc
    devname uevent_devpath
    dirname /dev/oncrpc

subsystem adsp
    devname uevent_devpath
    dirname /dev/adsp

subsystem msm_camera
    devname uevent_devpath
    dirname /dev/msm_camera

subsystem input
    devname uevent_devpath
    dirname /dev/input

subsystem mtd
    devname uevent_devpath
    dirname /dev/mtd

subsystem sound
    devname uevent_devpath
    dirname /dev/snd

# ueventd can only set permissions on device nodes and their associated
# sysfs attributes, not on arbitrary paths.
#