1service mmd /system/bin/mmd
2    class core
3    user mmd
4    group mmd system
5    critical
6    # For calling swapon syscall
7    capabilities SYS_ADMIN
8    disabled
9
10on boot
11    chown root mmd /sys/block/zram0/recompress
12    chmod 0220 /sys/block/zram0/recompress
13    chown root mmd /sys/block/zram0/writeback_limit
14    chmod 0664 /sys/block/zram0/writeback_limit
15
16    # /sys/block/zram0/idle and /sys/block/zram0/writeback are used by the
17    # system server managing zram writeback if mmd is disabled. This is
18    # duplicated as /system/core/rootdir/init.rc. But updating the same
19    # permission is safe to do.
20    chown root system /sys/block/zram0/idle
21    chmod 0220 /sys/block/zram0/idle
22    chown root system /sys/block/zram0/writeback
23    chmod 0220 /sys/block/zram0/writeback
24
25on boot && property:mmd.zram.enabled=true
26    # Allow mmd to run mkswap on zram device
27    chown root mmd /dev/block/zram0
28    chmod 0664 /dev/block/zram0
29    # Allow mmd to update zram disk size
30    chown root mmd /sys/block/zram0/disksize
31    chmod 0664 /sys/block/zram0/disksize
32
33on property:sys.boot_completed=1
34    # Copy AConfig flag value to "mmd.enabled_aconfig" system property because
35    # AConfig flag does not support init "on property" trigger.
36    # mmd service starts only if AConfig flag is enabled when boot_completed.
37    # Copying the value on boot_completed once is enough because AConfig is
38    # static during a device lifetime.
39    exec /system/bin/mmd --set-property
40
41on property:mmd.enabled_aconfig=true
42    # Enable mmd daemon if the system property copied from AConfig flag by
43    # "/system/bin/mmd --set-property" is enabled.
44    enable mmd
45