zlogger: add clear ioctl 98/280998/2
authorMateusz Majewski <m.majewski2@samsung.com>
Wed, 7 Sep 2022 11:17:29 +0000 (13:17 +0200)
committerMateusz Majewski <m.majewski2@samsung.com>
Wed, 7 Sep 2022 11:18:04 +0000 (13:18 +0200)
Change-Id: I44590f2cb68d6cb26c13ad56b88d1c202abf2ae2
Signed-off-by: Mateusz Majewski <m.majewski2@samsung.com>
include/uapi/linux/zlogger.h
kernel/zlogger/zlogger.c

index 5456cbf..8fb32ce 100644 (file)
@@ -35,6 +35,7 @@
 #define ZLOGGER_MSG_MAX (140)
 
 #define ZLOGGER_IOCTL_COMMAND_ALLOC (20745321)
+#define ZLOGGER_IOCTL_COMMAND_CLEAR (20745322)
 #define ZLOGGER_IOCTL_COMMAND_SET_DEFAULT_PRIORITY _IOW('a', 'a', uint32_t)
 #define ZLOGGER_IOCTL_COMMAND_SET_DEFAULT_TAG _IOW('a', 'b', char* )
 
index ea6c99b..003e032 100644 (file)
@@ -622,6 +622,30 @@ static long zlogger_set_default_tag(struct file *filp,  unsigned long arg)
        return 0;
 }
 
+static long zlogger_clear(void)
+{
+       int i;
+       struct thread_table_field *ptr = NULL;
+
+       mutex_lock(&g_block_mutex);
+
+       for (i = 1; i <= ZLOGGER_BLOCK_COUNT; i++) {
+               struct zlogger_block *block = get_block(i);
+
+               memset(&block->head, 0, sizeof(block->head));
+       }
+
+       hash_for_each(g_thread_table->data, i, ptr, next) {
+               if (ptr->blk != 0) {
+                       queue_push(&g_free_q, ptr->blk);
+                       ptr->blk = 0;
+               }
+       }
+
+       mutex_unlock(&g_block_mutex);
+       return 0;
+}
+
 static long zlogger_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 {
        switch (cmd) {
@@ -629,6 +653,10 @@ static long zlogger_ioctl(struct file *filp, unsigned int cmd, unsigned long arg
                        return alloc_block_for_thread(false);
                break;
 
+               case ZLOGGER_IOCTL_COMMAND_CLEAR:
+                       return zlogger_clear();
+               break;
+
                case ZLOGGER_IOCTL_COMMAND_SET_DEFAULT_PRIORITY:
                        return zlogger_update_prio(filp, arg);
                break;