Whamcloud - gitweb
3ffbac6fea08d06a01fdb45c580fb3375ac20879
[fs/lustre-release.git] / lnet / tests / ut_srv.c
1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2  * vim:expandtab:shiftwidth=8:tabstop=8:
3  */
4
5
6 #define UT_MSG_MODULE_NAME "utsrv "
7 #include "ut.h"
8
9
10 int pkt_size = 300;
11 module_param(pkt_size,int,S_IRUGO);
12 int auto_unlink=1;
13 module_param(auto_unlink,int,S_IRUGO);
14
15 char                   *buffer = 0;
16 lnet_handle_eq_t        eqh;
17 lnet_handle_me_t        meh;
18 lnet_handle_md_t        mdh;
19
20 static int __init utsrv_init(void)
21 {
22         int                     rc;
23         lnet_process_id_t       anypid;
24         lnet_process_id_t       mypid;
25         lnet_md_t               md;
26
27         PJK_UT_MSG(">>>\n");
28         PJK_UT_MSG("pkt_size=%d\n",pkt_size);
29         PJK_UT_MSG("auto_unlink=%d\n",auto_unlink);
30
31         PJK_UT_MSG("LIBCFS_ALLOC\n");
32         LIBCFS_ALLOC (buffer, pkt_size);
33         if (buffer == NULL)
34         {
35                 CERROR ("Unable to allocate out_buf (%d bytes)\n", pkt_size);
36                 rc = -ENOMEM;
37                 goto exit0;
38         }
39
40         PJK_UT_MSG("LNetNiInit()\n");
41         rc = LNetNIInit(0);
42         if (rc < 0)
43         {
44                 CERROR ("LNetNIInit: error %d\n", rc);
45                 goto exit1;
46         }
47
48         LNetGetId(0,&mypid);
49         PJK_UT_MSG("my.nid="LPX64"\n",mypid.nid);
50         PJK_UT_MSG("my.pid=0x%x\n",mypid.pid);
51
52         PJK_UT_MSG("LNetEQAlloc\n");
53         rc = LNetEQAlloc(
54                 64,      /* max number of envents why 64? */
55                 handler, /* handler callback */
56                 &eqh);   /* output handle */
57         if(rc != 0) {
58                 CERROR("LNetEQAlloc failed %d\n",rc);
59                 goto exit2;
60         }
61
62         anypid.nid = LNET_NID_ANY;
63         anypid.pid = LNET_PID_ANY;
64
65
66         PJK_UT_MSG("LNetMEAttach\n");
67         rc = LNetMEAttach(
68                 UT_PORTAL,    /* ptl index*/
69                 anypid,       /* pid - in this case allow any*/
70                 0,            /*matchbits*/
71                 0x0FFFF,      /*ignorebits - ignore botton 16-bits*/
72                 LNET_UNLINK,  /* unlik vs LNET_RETAIN*/
73                 LNET_INS_BEFORE,
74                 &meh);
75         if(rc != 0) {
76                 CERROR("LNetMeAttach failed %d\n",rc);
77                 goto exit3;
78         }
79
80         md.start = buffer;
81         md.length = pkt_size;
82         md.threshold = auto_unlink ? 1 : 100;
83         md.max_size = 0;
84         md.options = 0;
85         md.options |= LNET_MD_OP_GET;
86         md.options |= LNET_MD_OP_PUT;
87         md.options |= LNET_MD_ACK_DISABLE;
88         md.user_ptr= 0;
89         md.eq_handle = eqh;
90
91         PJK_UT_MSG("LNetMDAttach\n");
92         rc = LNetMDAttach(
93                 meh,
94                 md,
95                 LNET_UNLINK,
96                 &mdh);
97         if(rc != 0){
98                 CERROR("LNetMDAttach failed %d\n",rc);
99                 goto exit4;
100         }
101
102         rc = 0;
103         goto exit0;
104
105 exit4:
106         PJK_UT_MSG("LNetMEUnlink()\n");
107         LNetMEUnlink(meh);
108 exit3:
109         PJK_UT_MSG("LNetEQFree()\n");
110         LNetEQFree(eqh);
111 exit2:
112         PJK_UT_MSG("LNetNiFini()\n");
113         LNetNIFini();
114 exit1:
115         LIBCFS_FREE(buffer,pkt_size);
116 exit0:
117         PJK_UT_MSG("<<< rc=%d\n",rc);
118         return rc;
119
120 } /* utsrv_init() */
121
122
123 static void /*__exit*/ utsrv_cleanup(void)
124 {
125         PJK_UT_MSG(">>>\n");
126         PJK_UT_MSG("LNetMDUnlink()\n");
127         LNetMDUnlink(mdh);
128         PJK_UT_MSG("LNetMEUnlink()\n");
129         LNetMEUnlink(meh);
130         PJK_UT_MSG("LNetEQFree()\n");
131         LNetEQFree(eqh);
132         PJK_UT_MSG("LNetNiFini()\n");
133         LNetNIFini();
134         LIBCFS_FREE(buffer,pkt_size);
135         PJK_UT_MSG("<<<\n");
136 } /* utsrv_cleanup() */
137
138
139 MODULE_AUTHOR("PJ Kirner (CFS)");
140 MODULE_DESCRIPTION("A simple LNET Unit Test module");
141 MODULE_LICENSE("GPL");
142
143 cfs_module(utsvr, "1.0.0", utsrv_init, utsrv_cleanup);
144