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

Commit b6b8d1d8 authored by Suren Baghdasaryan's avatar Suren Baghdasaryan
Browse files

Subscribe ActivityManagerService to receive lmkd kill notifications



With new LMK_SUBSCRIBE lmkd command clients need to subscribe for lmkd
notifications.

Bug: 146597855
Test: run lmkd_unit_test and verify kill notification delivery
Change-Id: Ib54647ce36426a56db3ab6f95f375a0a0ce352ce
Signed-off-by: default avatarSuren Baghdasaryan <surenb@google.com>
parent 888365c0
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -246,20 +246,27 @@ public final class ProcessList {
            "persist.device_config.runtime_native.use_app_image_startup_cache";

    // Low Memory Killer Daemon command codes.
    // These must be kept in sync with the definitions in lmkd.c
    // These must be kept in sync with lmk_cmd definitions in lmkd.h
    //
    // LMK_TARGET <minfree> <minkillprio> ... (up to 6 pairs)
    // LMK_PROCPRIO <pid> <uid> <prio>
    // LMK_PROCREMOVE <pid>
    // LMK_PROCPURGE
    // LMK_GETKILLCNT
    // LMK_SUBSCRIBE
    // LMK_PROCKILL
    static final byte LMK_TARGET = 0;
    static final byte LMK_PROCPRIO = 1;
    static final byte LMK_PROCREMOVE = 2;
    static final byte LMK_PROCPURGE = 3;
    static final byte LMK_GETKILLCNT = 4;
    static final byte LMK_PROCKILL = 5; // Note: this is an unsolicated command
    static final byte LMK_SUBSCRIBE = 5;
    static final byte LMK_PROCKILL = 6; // Note: this is an unsolicated command

    // Low Memory Killer Daemon command codes.
    // These must be kept in sync with async_event_type definitions in lmkd.h
    //
    static final int LMK_ASYNC_EVENT_KILL = 0;

    // lmkd reconnect delay in msecs
    private static final long LMKD_RECONNECT_DELAY_MS = 1000;
@@ -1308,6 +1315,11 @@ public final class ProcessList {
                }
                ostream.write(buf.array(), 0, buf.position());
            }
            // Subscribe for kill event notifications
            buf = ByteBuffer.allocate(4 * 2);
            buf.putInt(LMK_SUBSCRIBE);
            buf.putInt(LMK_ASYNC_EVENT_KILL);
            ostream.write(buf.array(), 0, buf.position());
        } catch (IOException ex) {
            return false;
        }