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");
76 int __renew_logctx(struct log_ctx *lc, char *peer_name,
77 enum log_level log_level, char *logfile, uint32_t flags)
82 int (*renew_logctx)(struct log_ctx *lc, char *peer_name,
83 enum log_level log_level, char *logfile, uint32_t flags) = __renew_logctx;
85 int __init_logctx(struct log_ctx *lc, char *peer_name,
86 enum log_level log_level, char *logfile, uint32_t flags)
89 strncpy(lc->peer_name, peer_name, MAX_PEER_NAME);
90 lc->peer_name[MAX_PEER_NAME -1] = 0;
96 lc->log_level = log_level;
100 int (*init_logctx)(struct log_ctx *lc, char *peer_name,
101 enum log_level log_level, char *logfile, uint32_t flags) = __init_logctx;
103 void __xseg_log2(struct log_ctx *lc, unsigned int level, char *fmt, ...)
110 char *type = NULL, *pn = NULL;
114 case E: type = "XSEG[EE]"; break;
115 case W: type = "XSEG[WW]"; break;
116 case I: type = "XSEG[II]"; break;
117 case D: type = "XSEG[DD]"; break;
118 default: type = "XSEG[UNKNONW]"; break;
122 pn = "Invalid peer name";
125 time_to_tm(t.tv_sec, 0, &broken);
127 buf += sprintf(buf, "%s: %s: ", type, lc->peer_name);
128 buf += sprintf(buf, "%d:%d:%d:%ld\n\t", broken.tm_hour, broken.tm_min,
129 broken.tm_sec, t.tv_usec);
130 buf += vsprintf(buf, fmt, ap);
131 buf += sprintf(buf, "\n");
133 (void)printk(KERN_INFO "%s\n", buffer);
139 void xseg_printtrace(void)
144 module_init(xsegmod_init);
145 module_exit(xsegmod_exit);
147 MODULE_DESCRIPTION("xseg");
148 MODULE_AUTHOR("XSEG");
149 MODULE_LICENSE("BSD");