Lines Matching +full:0 +full:- +full:mon

1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (C) 2019-2022 Red Hat, Inc. Daniel Bristot de Oliveira <bristot@kernel.org>
10 * But other reactions can be added (on-demand) via this interface.
33 * - List the available reactors, one per line.
42 * - It is an on/off general switch for reactors, disabling
46 * - List available reactors, with the select reaction for the given
49 * - Writing the name of an reactor enables it to the given
78 if (strcmp(name, r->name) == 0) in get_reactor_rdef_by_name()
91 seq_printf(m, "%s\n", reactor->name); in reactors_show()
92 return 0; in reactors_show()
141 struct rv_monitor *mon = m->private; in monitor_reactor_show() local
144 if (mon->reactor == reactor) in monitor_reactor_show()
145 seq_printf(m, "[%s]\n", reactor->name); in monitor_reactor_show()
147 seq_printf(m, "%s\n", reactor->name); in monitor_reactor_show()
148 return 0; in monitor_reactor_show()
161 static void monitor_swap_reactors_single(struct rv_monitor *mon, in monitor_swap_reactors_single() argument
168 if (mon->reactor == reactor) in monitor_swap_reactors_single()
171 monitor_enabled = mon->enabled; in monitor_swap_reactors_single()
173 rv_disable_monitor(mon); in monitor_swap_reactors_single()
175 mon->reactor = reactor; in monitor_swap_reactors_single()
176 mon->react = reactor->react; in monitor_swap_reactors_single()
180 rv_enable_monitor(mon); in monitor_swap_reactors_single()
183 static void monitor_swap_reactors(struct rv_monitor *mon, struct rv_reactor *reactor) in monitor_swap_reactors() argument
185 struct rv_monitor *p = mon; in monitor_swap_reactors()
187 if (rv_is_container_monitor(mon)) in monitor_swap_reactors()
189 if (p->parent != mon) in monitor_swap_reactors()
199 monitor_swap_reactors_single(mon, reactor, false); in monitor_swap_reactors()
207 struct rv_monitor *mon; in monitor_reactors_write() local
210 int retval = -EINVAL; in monitor_reactors_write()
215 return -EINVAL; in monitor_reactors_write()
217 memset(buff, 0, sizeof(buff)); in monitor_reactors_write()
219 retval = simple_write_to_buffer(buff, sizeof(buff) - 1, ppos, user_buf, count); in monitor_reactors_write()
220 if (retval < 0) in monitor_reactors_write()
221 return -EFAULT; in monitor_reactors_write()
232 seq_f = file->private_data; in monitor_reactors_write()
233 mon = seq_f->private; in monitor_reactors_write()
237 retval = -EINVAL; in monitor_reactors_write()
240 if (strcmp(ptr, reactor->name) != 0) in monitor_reactors_write()
243 monitor_swap_reactors(mon, reactor); in monitor_reactors_write()
259 struct rv_monitor *mon = inode->i_private; in monitor_reactors_open() local
264 if (ret < 0) in monitor_reactors_open()
268 * seq_open stores the seq_file on the file->private data. in monitor_reactors_open()
270 seq_f = file->private_data; in monitor_reactors_open()
275 seq_f->private = mon; in monitor_reactors_open()
277 return 0; in monitor_reactors_open()
293 if (strcmp(reactor->name, r->name) == 0) { in __rv_register_reactor()
294 pr_info("Reactor %s is already registered\n", reactor->name); in __rv_register_reactor()
295 return -EINVAL; in __rv_register_reactor()
299 list_add_tail(&reactor->list, &rv_reactors_list); in __rv_register_reactor()
301 return 0; in __rv_register_reactor()
305 * rv_register_reactor - register a rv reactor.
308 * Returns 0 if successful, error otherwise.
312 int retval = 0; in rv_register_reactor()
314 if (strlen(reactor->name) >= MAX_RV_REACTOR_NAME_SIZE) { in rv_register_reactor()
316 reactor->name, MAX_RV_MONITOR_NAME_SIZE); in rv_register_reactor()
317 return -EINVAL; in rv_register_reactor()
327 * rv_unregister_reactor - unregister a rv reactor.
330 * Returns 0 if successful, error otherwise.
335 list_del(&reactor->list); in rv_unregister_reactor()
337 return 0; in rv_unregister_reactor()
346 * rv_reacting_on - checks if reacting is on
348 * Returns 1 if on, 0 otherwise.
363 buff = rv_reacting_on() ? "1\n" : "0\n"; in reacting_on_read_data()
401 * before returning to user-space. in reacting_on_write_data()
417 * reactor_populate_monitor - creates per monitor reactors file
418 * @mon: The monitor.
420 * Returns 0 if successful, error otherwise.
422 int reactor_populate_monitor(struct rv_monitor *mon) in reactor_populate_monitor() argument
426 tmp = rv_create_file("reactors", RV_MODE_WRITE, mon->root_d, mon, &monitor_reactors_ops); in reactor_populate_monitor()
428 return -ENOMEM; in reactor_populate_monitor()
433 mon->reactor = get_reactor_rdef_by_name("nop"); in reactor_populate_monitor()
435 return 0; in reactor_populate_monitor()
447 .description = "no-operation reactor: do nothing.",
471 return 0; in init_rv_reactors()
478 return -ENOMEM; in init_rv_reactors()