Lines Matching refs:ops

112 	struct appldata_ops *ops;  in appldata_work_fn()  local
116 ops = list_entry(lh, struct appldata_ops, list); in appldata_work_fn()
117 if (ops->active == 1) { in appldata_work_fn()
118 ops->callback(ops->data); in appldata_work_fn()
269 struct appldata_ops *ops = NULL, *tmp_ops; in appldata_generic_handler() local
292 ops = ctl->data; in appldata_generic_handler()
293 if (!try_module_get(ops->owner)) { // protect this function in appldata_generic_handler()
299 active = ops->active; in appldata_generic_handler()
302 module_put(ops->owner); in appldata_generic_handler()
307 if (active && (ops->active == 0)) { in appldata_generic_handler()
309 if (!try_module_get(ops->owner)) { in appldata_generic_handler()
311 module_put(ops->owner); in appldata_generic_handler()
314 ops->callback(ops->data); // init record in appldata_generic_handler()
315 rc = appldata_diag(ops->record_nr, in appldata_generic_handler()
317 (unsigned long) ops->data, ops->size, in appldata_generic_handler()
318 ops->mod_lvl); in appldata_generic_handler()
321 "failed with rc=%d\n", ops->name, rc); in appldata_generic_handler()
322 module_put(ops->owner); in appldata_generic_handler()
324 ops->active = 1; in appldata_generic_handler()
325 } else if (!active && (ops->active == 1)) { in appldata_generic_handler()
326 ops->active = 0; in appldata_generic_handler()
327 rc = appldata_diag(ops->record_nr, APPLDATA_STOP_REC, in appldata_generic_handler()
328 (unsigned long) ops->data, ops->size, in appldata_generic_handler()
329 ops->mod_lvl); in appldata_generic_handler()
332 "failed with rc=%d\n", ops->name, rc); in appldata_generic_handler()
333 module_put(ops->owner); in appldata_generic_handler()
336 module_put(ops->owner); in appldata_generic_handler()
349 int appldata_register_ops(struct appldata_ops *ops) in appldata_register_ops() argument
351 if (ops->size > APPLDATA_MAX_REC_SIZE) in appldata_register_ops()
354 ops->ctl_table = kcalloc(1, sizeof(struct ctl_table), GFP_KERNEL); in appldata_register_ops()
355 if (!ops->ctl_table) in appldata_register_ops()
359 list_add(&ops->list, &appldata_ops_list); in appldata_register_ops()
362 ops->ctl_table[0].procname = ops->name; in appldata_register_ops()
363 ops->ctl_table[0].mode = S_IRUGO | S_IWUSR; in appldata_register_ops()
364 ops->ctl_table[0].proc_handler = appldata_generic_handler; in appldata_register_ops()
365 ops->ctl_table[0].data = ops; in appldata_register_ops()
367 ops->sysctl_header = register_sysctl_sz(appldata_proc_name, ops->ctl_table, 1); in appldata_register_ops()
368 if (!ops->sysctl_header) in appldata_register_ops()
373 list_del(&ops->list); in appldata_register_ops()
375 kfree(ops->ctl_table); in appldata_register_ops()
384 void appldata_unregister_ops(struct appldata_ops *ops) in appldata_unregister_ops() argument
387 list_del(&ops->list); in appldata_unregister_ops()
389 unregister_sysctl_table(ops->sysctl_header); in appldata_unregister_ops()
390 kfree(ops->ctl_table); in appldata_unregister_ops()