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

Commit 4c6d3d73 authored by Suren Baghdasaryan's avatar Suren Baghdasaryan
Browse files

lmkd: Add library function to unregister a process



Introduce lmkd_unregister_proc helper function. Fix a bug where
lmkd_pack_set_procremove used a wrong structure as a parameter.

Bug: 129011369
Test: verify process record removal when it is manually killed
Change-Id: I7ab5a499f6b1c6eecfdba4d0a5ec916053e2726a
Signed-off-by: default avatarSuren Baghdasaryan <surenb@google.com>
parent adb54f81
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -39,6 +39,14 @@ int lmkd_connect();
 */
int lmkd_register_proc(int sock, struct lmk_procprio *params);

/*
 * Unregisters a process previously registered with lmkd.
 * On success returns 0.
 * On error, -1 is returned.
 * In the case of error errno is set appropriately.
 */
int lmkd_unregister_proc(int sock, struct lmk_procremove *params);

/*
 * Creates memcg directory for given process.
 * On success returns 0.
+1 −1
Original line number Diff line number Diff line
@@ -135,7 +135,7 @@ static inline void lmkd_pack_get_procremove(LMKD_CTRL_PACKET packet,
 * Warning: no checks performed, caller should ensure valid parameters.
 */
static inline size_t lmkd_pack_set_procremove(LMKD_CTRL_PACKET packet,
                                              struct lmk_procprio* params) {
                                              struct lmk_procremove* params) {
    packet[0] = htonl(LMK_PROCREMOVE);
    packet[1] = htonl(params->pid);
    return 2 * sizeof(int);
+11 −0
Original line number Diff line number Diff line
@@ -42,6 +42,17 @@ int lmkd_register_proc(int sock, struct lmk_procprio *params) {
    return (ret < 0) ? -1 : 0;
}

int lmkd_unregister_proc(int sock, struct lmk_procremove *params) {
    LMKD_CTRL_PACKET packet;
    size_t size;
    int ret;

    size = lmkd_pack_set_procremove(packet, params);
    ret = TEMP_FAILURE_RETRY(write(sock, packet, size));

    return (ret < 0) ? -1 : 0;
}

int create_memcg(uid_t uid, pid_t pid) {
    char buf[256];
    int tasks_file;