1 #include <linux/kernel.h>
2 #include <linux/types.h>
3 #include <linux/slab.h>
4 #include <linux/module.h>
5 #include <linux/time.h>
7 #include <sys/domain.h>
9 #include <xtypes/domain.h>
10 #include <xseg/domain.h>
12 int (*xseg_snprintf)(char *str, size_t size, const char *format, ...) = snprintf;
14 char __xseg_errbuf[4096];
16 static spinlock_t __lock;
18 void __lock_domain(void)
20 spin_lock_irq(&__lock);
23 void __unlock_domain(void)
25 spin_unlock_irq(&__lock);
28 void __load_plugin(const char *name)
33 uint64_t __get_id(void)
38 int __xseg_preinit(void)
43 void __xseg_log(const char *msg)
45 (void)printk(KERN_INFO "%s\n", msg);
48 void *xtypes_malloc(unsigned long size)
50 return kmalloc(size, GFP_KERNEL);
53 void xtypes_free(void *ptr)
58 void __get_current_time(struct timeval *tv)
63 static int __init xsegmod_init(void)
65 printk(KERN_INFO "xseg loaded");
69 static void __exit xsegmod_exit(void)
71 printk(KERN_INFO "xseg unloaded");
75 int kernel_init_logctx(struct log_ctx *lc, char *peer_name, enum log_level log_level, char *logfile)
77 lc->peer_name = peer_name;
78 lc->log_level = log_level;
82 int (*init_logctx)(struct log_ctx *lc, char *peer_name, enum log_level log_level, char *logfile) = kernel_init_logctx;
84 void __xseg_log2(struct log_ctx *lc, unsigned int level, char *fmt, ...)
91 char *type = NULL, *pn = NULL;
95 case E: type = "XSEG[EE]"; break;
96 case W: type = "XSEG[WW]"; break;
97 case I: type = "XSEG[II]"; break;
98 case D: type = "XSEG[DD]"; break;
99 default: type = "XSEG[UNKNONW]"; break;
103 pn = "Invalid peer name";
106 time_to_tm(t.tv_sec, 0, &broken);
108 buf += sprintf(buf, "%s: %s: ", type, lc->peer_name);
109 buf += sprintf(buf, "%d:%d:%d:%ld\n\t", broken.tm_hour, broken.tm_min,
110 broken.tm_sec, t.tv_usec);
111 buf += vsprintf(buf, fmt, ap);
112 buf += sprintf(buf, "\n");
114 (void)printk(KERN_INFO "%s\n", buffer);
120 void xseg_printtrace(void)
125 module_init(xsegmod_init);
126 module_exit(xsegmod_exit);
128 MODULE_DESCRIPTION("xseg");
129 MODULE_AUTHOR("XSEG");
130 MODULE_LICENSE("GPL");