xref: /f-stack/lib/ff_msg.h (revision 7abd0fb2)
1*7abd0fb2Slogwang /*
2*7abd0fb2Slogwang  * Copyright (C) 2017 THL A29 Limited, a Tencent company.
3*7abd0fb2Slogwang  * All rights reserved.
4*7abd0fb2Slogwang  *
5*7abd0fb2Slogwang  * Redistribution and use in source and binary forms, with or without
6*7abd0fb2Slogwang  * modification, are permitted provided that the following conditions are met:
7*7abd0fb2Slogwang  *
8*7abd0fb2Slogwang  * 1. Redistributions of source code must retain the above copyright notice, this
9*7abd0fb2Slogwang  *   list of conditions and the following disclaimer.
10*7abd0fb2Slogwang  * 2. Redistributions in binary form must reproduce the above copyright notice,
11*7abd0fb2Slogwang  *   this list of conditions and the following disclaimer in the documentation
12*7abd0fb2Slogwang  *   and/or other materials provided with the distribution.
13*7abd0fb2Slogwang  *
14*7abd0fb2Slogwang  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15*7abd0fb2Slogwang  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16*7abd0fb2Slogwang  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17*7abd0fb2Slogwang  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
18*7abd0fb2Slogwang  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19*7abd0fb2Slogwang  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20*7abd0fb2Slogwang  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21*7abd0fb2Slogwang  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22*7abd0fb2Slogwang  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23*7abd0fb2Slogwang  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24*7abd0fb2Slogwang  *
25*7abd0fb2Slogwang  */
26*7abd0fb2Slogwang 
27*7abd0fb2Slogwang #ifndef _FF_MSG_H_
28*7abd0fb2Slogwang #define _FF_MSG_H_
29*7abd0fb2Slogwang 
30*7abd0fb2Slogwang #include <rte_memory.h>
31*7abd0fb2Slogwang 
32*7abd0fb2Slogwang #define FF_MSG_RING_IN  "ff_msg_ring_in_"
33*7abd0fb2Slogwang #define FF_MSG_RING_OUT "ff_msg_ring_out_"
34*7abd0fb2Slogwang #define FF_MSG_POOL     "ff_msg_pool"
35*7abd0fb2Slogwang 
36*7abd0fb2Slogwang /* MSG TYPE: sysctl, sysctlbyname, etc.. */
37*7abd0fb2Slogwang enum FF_MSG_TYPE {
38*7abd0fb2Slogwang     FF_UNKNOWN = 0,
39*7abd0fb2Slogwang     FF_SYSCTL,
40*7abd0fb2Slogwang };
41*7abd0fb2Slogwang 
42*7abd0fb2Slogwang struct ff_sysctl_args {
43*7abd0fb2Slogwang     int *name;
44*7abd0fb2Slogwang     unsigned namelen;
45*7abd0fb2Slogwang     void *old;
46*7abd0fb2Slogwang     size_t *oldlenp;
47*7abd0fb2Slogwang     void *new;
48*7abd0fb2Slogwang     size_t newlen;
49*7abd0fb2Slogwang };
50*7abd0fb2Slogwang 
51*7abd0fb2Slogwang #define MAX_MSG_BUF_SIZE 10240
52*7abd0fb2Slogwang 
53*7abd0fb2Slogwang /* structure of ipc msg */
54*7abd0fb2Slogwang struct ff_msg {
55*7abd0fb2Slogwang     enum FF_MSG_TYPE msg_type;
56*7abd0fb2Slogwang     /* Result of msg processing */
57*7abd0fb2Slogwang     int result;
58*7abd0fb2Slogwang     /* Length of segment buffer. */
59*7abd0fb2Slogwang     uint16_t buf_len;
60*7abd0fb2Slogwang     /* Address of segment buffer. */
61*7abd0fb2Slogwang     char *buf_addr;
62*7abd0fb2Slogwang 
63*7abd0fb2Slogwang     union {
64*7abd0fb2Slogwang         struct ff_sysctl_args sysctl;
65*7abd0fb2Slogwang     };
66*7abd0fb2Slogwang } __attribute__((packed)) __rte_cache_aligned;
67*7abd0fb2Slogwang 
68*7abd0fb2Slogwang #endif
69