summaryrefslogtreecommitdiff
path: root/kill-processes/meow.c
diff options
context:
space:
mode:
Diffstat (limited to 'kill-processes/meow.c')
-rw-r--r--kill-processes/meow.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/kill-processes/meow.c b/kill-processes/meow.c
new file mode 100644
index 0000000..1283e92
--- /dev/null
+++ b/kill-processes/meow.c
@@ -0,0 +1,63 @@
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/sched.h>
+#include <linux/string.h>
+#include <asm/siginfo.h>
+#include <linux/rcupdate.h>
+#include <linux/sched.h>
+#include <linux/delay.h>
+#include <linux/kthread.h>
+
+int pid = 1;
+
+DECLARE_WAIT_QUEUE_HEAD(wq);
+
+struct task_struct *task1;
+
+void procs_info_print(void)
+{
+ struct task_struct* task_list;
+ size_t process_counter = 0;
+ for_each_process(task_list) {
+ if (strcmp (task_list->comm, "qalculate-gtk") == 0) {
+ pr_info("%s [%d]\n", task_list->comm, task_list->pid);
+ pr_info ("killing qalculate %d\n", task_list->pid);
+ struct siginfo info;
+ struct task_struct *task;
+ memset (&info, 0, sizeof (struct siginfo));
+ info.si_signo = SIGTERM;
+ info.si_code = SI_QUEUE;
+ info.si_int = 1234;
+ rcu_read_lock ();
+ task = pid_task (find_pid_ns (task_list->pid, &init_pid_ns), PIDTYPE_PID);
+ if (!task) {
+ printk ("pid lost\n");
+ rcu_read_unlock ();
+ }
+ }
+ }
+}
+
+int run(void *data)
+{
+ while (true) {
+ procs_info_print();
+ usleep_range(1000000, 1000001);
+ }
+ return 0;
+}
+
+int init_module(void)
+{
+ printk(KERN_INFO "arf arf ^w^\n");
+ task1 = kthread_create (&run, &pid, "teehee");
+ wake_up_process (task1);
+ return 0;
+}
+
+void cleanup_module(void)
+{
+ return;
+}
+
+MODULE_LICENSE("GPL");