aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/connector.h
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
commitc71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch)
treeecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /include/linux/connector.h
parentea53c912f8a86a8567697115b6a0d8152beee5c8 (diff)
parent6a00f206debf8a5c8899055726ad127dbeeed098 (diff)
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts: litmus/sched_cedf.c
Diffstat (limited to 'include/linux/connector.h')
-rw-r--r--include/linux/connector.h36
1 files changed, 11 insertions, 25 deletions
diff --git a/include/linux/connector.h b/include/linux/connector.h
index 3a779ffba60b..f696bccd48cb 100644
--- a/include/linux/connector.h
+++ b/include/linux/connector.h
@@ -42,8 +42,9 @@
42#define CN_VAL_DM_USERSPACE_LOG 0x1 42#define CN_VAL_DM_USERSPACE_LOG 0x1
43#define CN_IDX_DRBD 0x8 43#define CN_IDX_DRBD 0x8
44#define CN_VAL_DRBD 0x1 44#define CN_VAL_DRBD 0x1
45#define CN_KVP_IDX 0x9 /* HyperV KVP */
45 46
46#define CN_NETLINK_USERS 8 47#define CN_NETLINK_USERS 10 /* Highest index + 1 */
47 48
48/* 49/*
49 * Maximum connector's message size. 50 * Maximum connector's message size.
@@ -87,14 +88,6 @@ struct cn_queue_dev {
87 atomic_t refcnt; 88 atomic_t refcnt;
88 unsigned char name[CN_CBQ_NAMELEN]; 89 unsigned char name[CN_CBQ_NAMELEN];
89 90
90 struct workqueue_struct *cn_queue;
91 /* Sent to kevent to create cn_queue only when needed */
92 struct work_struct wq_creation;
93 /* Tell if the wq_creation job is pending/completed */
94 atomic_t wq_requested;
95 /* Wait for cn_queue to be created */
96 wait_queue_head_t wq_created;
97
98 struct list_head queue_list; 91 struct list_head queue_list;
99 spinlock_t queue_lock; 92 spinlock_t queue_lock;
100 93
@@ -106,20 +99,13 @@ struct cn_callback_id {
106 struct cb_id id; 99 struct cb_id id;
107}; 100};
108 101
109struct cn_callback_data {
110 struct sk_buff *skb;
111 void (*callback) (struct cn_msg *, struct netlink_skb_parms *);
112
113 void *free;
114};
115
116struct cn_callback_entry { 102struct cn_callback_entry {
117 struct list_head callback_entry; 103 struct list_head callback_entry;
118 struct work_struct work; 104 atomic_t refcnt;
119 struct cn_queue_dev *pdev; 105 struct cn_queue_dev *pdev;
120 106
121 struct cn_callback_id id; 107 struct cn_callback_id id;
122 struct cn_callback_data data; 108 void (*callback) (struct cn_msg *, struct netlink_skb_parms *);
123 109
124 u32 seq, group; 110 u32 seq, group;
125}; 111};
@@ -134,21 +120,21 @@ struct cn_dev {
134 struct cn_queue_dev *cbdev; 120 struct cn_queue_dev *cbdev;
135}; 121};
136 122
137int cn_add_callback(struct cb_id *, char *, void (*callback) (struct cn_msg *, struct netlink_skb_parms *)); 123int cn_add_callback(struct cb_id *id, const char *name,
124 void (*callback)(struct cn_msg *, struct netlink_skb_parms *));
138void cn_del_callback(struct cb_id *); 125void cn_del_callback(struct cb_id *);
139int cn_netlink_send(struct cn_msg *, u32, gfp_t); 126int cn_netlink_send(struct cn_msg *, u32, gfp_t);
140 127
141int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(struct cn_msg *, struct netlink_skb_parms *)); 128int cn_queue_add_callback(struct cn_queue_dev *dev, const char *name,
129 struct cb_id *id,
130 void (*callback)(struct cn_msg *, struct netlink_skb_parms *));
142void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); 131void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id);
132void cn_queue_release_callback(struct cn_callback_entry *);
143 133
144int queue_cn_work(struct cn_callback_entry *cbq, struct work_struct *work); 134struct cn_queue_dev *cn_queue_alloc_dev(const char *name, struct sock *);
145
146struct cn_queue_dev *cn_queue_alloc_dev(char *name, struct sock *);
147void cn_queue_free_dev(struct cn_queue_dev *dev); 135void cn_queue_free_dev(struct cn_queue_dev *dev);
148 136
149int cn_cb_equal(struct cb_id *, struct cb_id *); 137int cn_cb_equal(struct cb_id *, struct cb_id *);
150 138
151void cn_queue_wrapper(struct work_struct *work);
152
153#endif /* __KERNEL__ */ 139#endif /* __KERNEL__ */
154#endif /* __CONNECTOR_H */ 140#endif /* __CONNECTOR_H */