1 /* ckrm_ce.h - Header file to be used by Classification Engine of CKRM
3 * Copyright (C) Hubertus Franke, IBM Corp. 2003
4 * (C) Shailabh Nagar, IBM Corp. 2003
5 * (C) Chandra Seetharaman, IBM Corp. 2003
7 * Provides data structures, macros and kernel API of CKRM for
8 * classification engine.
10 * Latest version, more details at http://ckrm.sf.net
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation; either version 2 of the License, or
15 * (at your option) any later version.
24 * Adopted to classtypes
27 #ifndef _LINUX_CKRM_CE_H
28 #define _LINUX_CKRM_CE_H
32 #include "ckrm.h" // getting the event names
34 /* Action parameters identifying the cause of a task<->class notify callback
35 * these can perculate up to user daemon consuming records send by the
36 * classification engine
41 typedef void *(*ce_classify_fct_t) (enum ckrm_event event, void *obj, ...);
42 typedef void (*ce_notify_fct_t) (enum ckrm_event event, void *classobj,
45 typedef struct ckrm_eng_callback {
46 /* general state information */
47 int always_callback; /* set if CE should always be called back
48 regardless of numclasses */
53 /* callbacks which are called without holding locks */
55 unsigned long c_interest; /* set of classification events of
59 /* generic classify */
60 ce_classify_fct_t classify;
62 void (*class_add) (const char *name, void *core, int classtype);
64 void (*class_delete) (const char *name, void *core, int classtype);
67 /* callbacks which are called while holding task_lock(tsk) */
69 unsigned long n_interest; /* set of notification events of
72 /* notify on class switch */
73 ce_notify_fct_t notify;
75 } ckrm_eng_callback_t;
80 typedef struct rbce_eng_callback {
81 int (*mkdir) (struct inode *, struct dentry *, int); // mkdir
82 int (*rmdir) (struct inode *, struct dentry *); // rmdir
85 } rbce_eng_callback_t;
87 extern int ckrm_register_engine(const char *name, ckrm_eng_callback_t *);
88 extern int ckrm_unregister_engine(const char *name);
90 extern void *ckrm_classobj(char *, int *classtype);
91 extern int get_exe_path_name(struct task_struct *t, char *filename,
94 extern int rcfs_register_engine(rbce_eng_callback_t *);
95 extern int rcfs_unregister_engine(rbce_eng_callback_t *);
97 extern int ckrm_reclassify(int pid);
99 #ifndef _LINUX_CKRM_RC_H
100 // ckrm kernel has inlined functions for this which are exported
101 extern void ckrm_core_grab(void *);
102 extern void ckrm_core_drop(void *);
105 #endif // CONFIG_CKRM
109 #endif // _LINUX_CKRM_CE_H