Include licencing terms in the source files themselves.
[open-ath9k-htc-firmware.git] / target_firmware / magpie_fw_dev / target / inc / adf_os_module.h
1 /*
2  * Copyright (c) 2013 Qualcomm Atheros, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted (subject to the limitations in the
7  * disclaimer below) provided that the following conditions are met:
8  *
9  *  * Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  *
12  *  * Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the
15  *    distribution.
16  *
17  *  * Neither the name of Qualcomm Atheros nor the names of its
18  *    contributors may be used to endorse or promote products derived
19  *    from this software without specific prior written permission.
20  *
21  * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
22  * GRANTED BY THIS LICENSE.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
23  * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
24  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
27  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
30  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
31  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
32  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
33  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34  */
35 /**
36  * @ingroup adf_os_public
37  * @file adf_os_module.h
38  * This file abstracts "kernel module" semantics.
39  */
40
41 #ifndef _ADF_OS_MODULE_H
42 #define _ADF_OS_MODULE_H
43
44 #include <adf_os_module_pvt.h>
45
46 typedef a_status_t (*module_init_func_t)(void);
47
48 /**
49  * @brief Specify the module's entry point.
50  */ 
51 #define adf_os_virt_module_init(_mod_init_func)  __adf_os_virt_module_init(_mod_init_func)
52
53 /**
54  * @brief Specify the module's exit point.
55  */ 
56 #define adf_os_virt_module_exit(_mod_exit_func)  __adf_os_virt_module_exit(_mod_exit_func)
57
58 /**
59  * @brief Specify the module's name.
60  */ 
61 #define adf_os_virt_module_name(_name)      __adf_os_virt_module_name(_name)
62
63 /**
64  * @brief Specify the module's dependency on another module.
65  */ 
66 #define adf_os_module_dep(_name,_dep)       __adf_os_module_dep(_name,_dep)
67
68 /**
69  * @brief Export a symbol from a module.
70  */ 
71 #define adf_os_export_symbol(_sym)         __adf_os_export_symbol(_sym)
72      
73 /**
74  * @brief Module parameter of type integer.
75  */ 
76 #define ADF_OS_PARAM_TYPE_INT32             __ADF_OS_PARAM_TYPE_INT32
77
78 /**
79  * @brief Module parameter of type string.
80  */ 
81 #define ADF_OS_PARAM_TYPE_STRING            __ADF_OS_PARAM_TYPE_STRING
82
83 /**
84  * @brief Declare a module parameter. 
85  *
86  * @param[in] name name of the parameter
87  * @param[in] type type of the parameter
88  *
89  * @note These provide the config data defined by the userland
90  * for this device. It can be queried at any time, given the name string
91  * Only two types are supported
92  * ADF_OS_PARAM_TYPE_STRING
93  * ADF_OS_PARAM_TYPE_INT32
94  * For example, say, the parameters name "my_int" and "my_name" are of 
95  * variables of type int and string respectively. Then you would declare them 
96  * as follows:
97  * @code
98  * adf_os_declare_param(my_int, ADF_OS_PARAM_TYPE_INT32);
99  * adf_os_declare_param(my_name, ADF_OS_PARAM_TYPE_STRING);
100  * @endcode
101  * To read the userland provided config value, you would do something like
102  *
103  * @code
104  * adf_os_read_param(my_name, &softc->sc_my_name);
105  * @endcode
106  *
107  * or 
108  * @code
109  * st = adf_os_read_param(my_int, &softc->sc_my_int);
110  * @endcode
111  * st could be :
112  *
113  * A_STATUS_OK
114  * A_STATUS_ENOMEM
115  * A_STATUS_ENOENT
116  *
117  */
118 #define adf_os_declare_param(_name, _type) __adf_os_declare_param(_name, _type)
119
120 /**
121  * @brief Read a parameter's value
122  *
123  * @param[in]  osdev    os handle
124  * @param[in]  name     name of parameter
125  * @param[in]  type     type of parameter
126  * @param[out] val      value read
127  *
128  * @note pval is a point to the variable. Therefore,
129  * for strings it is a_uint8_t **
130  * for integers it is a_int_t *
131  */
132 #define adf_os_read_param(_osdev, _name, _type, _pval)        \
133                         __adf_os_read_param(_osdev, _name, _type, _pval)
134
135 #endif /*_ADF_OS_MODULE_H*/