Whamcloud - gitweb
b=5498
[fs/lustre-release.git] / lnet / ulnds / socklnd / procbridge.h
1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2  * vim:expandtab:shiftwidth=8:tabstop=8:
3  *
4  *  Copyright (c) 2002 Cray Inc.
5  *  Copyright (c) 2003 Cluster File Systems, Inc.
6  *
7  *   This file is part of Portals, http://www.sf.net/projects/sandiaportals/
8  */
9
10 #ifndef _PROCBRIDGE_H_
11 #define _PROCBRIDGE_H_
12
13 #include <pthread.h>
14 #include <bridge.h>
15
16
17 #define NAL_FLAG_RUNNING        1
18 #define NAL_FLAG_STOPPING       2
19 #define NAL_FLAG_STOPPED        4
20
21 typedef struct procbridge {
22     /* sync between user threads and nal thread */
23     pthread_t t;
24     pthread_cond_t cond;
25     pthread_mutex_t mutex;
26
27     /* socket pair used to notify nal thread */
28     int notifier[2];
29
30     int nal_flags;
31
32 } *procbridge;
33
34 typedef struct nal_init_args {
35     lnet_pid_t        nia_requested_pid;
36     bridge           nia_bridge;
37 } nal_init_args_t;
38
39 extern void *nal_thread(void *);
40
41 extern void procbridge_wakeup_nal(procbridge p);
42
43 extern int procbridge_startup (lnet_ni_t *);
44 extern void procbridge_shutdown (lnet_ni_t *);
45
46 extern void tcpnal_notify(lnet_ni_t *ni, lnet_nid_t nid, int alive);
47
48 extern int tcpnal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg);
49 int tcpnal_recv(lnet_ni_t *ni, void *private, lnet_msg_t *cookie,
50                 int delayed, unsigned int niov,
51                 struct iovec *iov, lnet_kiov_t *kiov,
52                 unsigned int offset, unsigned int mlen, unsigned int rlen);
53 extern int tcpnal_set_global_params();
54
55
56
57
58 #endif