1 #ifndef _VX_CVIRT_DEF_H
2 #define _VX_CVIRT_DEF_H
4 #include <linux/jiffies.h>
5 #include <linux/utsname.h>
6 #include <linux/spinlock.h>
7 #include <linux/wait.h>
8 #include <linux/time.h>
9 #include <asm/atomic.h>
12 struct _vx_usage_stat {
23 wait_queue_head_t log_wait;
24 spinlock_t logbuf_lock; /* lock for the log buffer */
26 unsigned long log_start; /* next char to be read by syslog() */
27 unsigned long con_start; /* next char to be sent to consoles */
28 unsigned long log_end; /* most-recently-written-char + 1 */
29 unsigned long logged_chars; /* #chars since last read+clear operation */
35 /* context sub struct */
38 // int max_threads; /* maximum allowed threads */
39 atomic_t nr_threads; /* number of current threads */
40 atomic_t nr_running; /* number of running threads */
41 atomic_t nr_uninterruptible; /* number of uninterruptible threads */
43 atomic_t nr_onhold; /* processes on hold */
44 uint32_t onhold_last; /* jiffies when put on hold */
46 struct timespec bias_idle;
47 struct timespec bias_uptime; /* context creation point */
48 uint64_t bias_clock; /* offset in clock_t */
50 struct new_utsname utsname;
52 spinlock_t load_lock; /* lock for the load averages */
53 atomic_t load_updates; /* nr of load updates done so far */
54 uint32_t load_last; /* last time load was cacled */
55 uint32_t load[3]; /* load averages 1,5,15 */
57 atomic_t total_forks; /* number of forks so far */
59 struct _vx_usage_stat cpustat[NR_CPUS];
61 struct _vx_syslog syslog;
65 #ifdef CONFIG_VSERVER_DEBUG
67 static inline void __dump_vx_cvirt(struct _vx_cvirt *cvirt)
69 printk("\t_vx_cvirt:\n");
70 printk("\t threads: %4d, %4d, %4d, %4d\n",
71 atomic_read(&cvirt->nr_threads),
72 atomic_read(&cvirt->nr_running),
73 atomic_read(&cvirt->nr_uninterruptible),
74 atomic_read(&cvirt->nr_onhold));
76 printk("\t total_forks = %d\n", atomic_read(&cvirt->total_forks));
87 /* context sub struct */
90 struct _vx_sock_acc sock[5][3];
93 #ifdef CONFIG_VSERVER_DEBUG
95 static inline void __dump_vx_cacct(struct _vx_cacct *cacct)
99 printk("\t_vx_cacct:");
100 for (i=0; i<5; i++) {
101 struct _vx_sock_acc *ptr = cacct->sock[i];
103 printk("\t [%d] =", i);
104 for (j=0; j<3; j++) {
105 printk(" [%d] = %8d, %8d", j,
106 atomic_read(&ptr[j].count),
107 atomic_read(&ptr[j].total));
115 #endif /* _VX_CVIRT_DEF_H */