[WSD] Change ib_listen to return an error value rather than set it
[mirror/winof/.git] / tools / fwupdate / user / flint-tools.h
1 /*\r
2  * Copyright (c) 2004-2005 Mellanox Technologies Ltd.  All rights reserved.\r
3  *\r
4  * This software is available to you under the OpenIB.org BSD license\r
5  * below:\r
6  *\r
7  *     Redistribution and use in source and binary forms, with or\r
8  *     without modification, are permitted provided that the following\r
9  *     conditions are met:\r
10  *\r
11  *      - Redistributions of source code must retain the above\r
12  *        copyright notice, this list of conditions and the following\r
13  *        disclaimer.\r
14  *\r
15  *      - Redistributions in binary form must reproduce the above\r
16  *        copyright notice, this list of conditions and the following\r
17  *        disclaimer in the documentation and/or other materials\r
18  *        provided with the distribution.\r
19  *\r
20  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
21  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
22  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
23  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
24  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
25  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
26  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
27  * SOFTWARE.\r
28  *\r
29  * $Id$\r
30  */\r
31 \r
32 \r
33 #ifndef _FLINT_TOOLS_H\r
34 #define _FLINT_TOOLS_H\r
35 \r
36 #define __STDC_FORMAT_MACROS\r
37 \r
38 #include <sys/stat.h>\r
39 #include <sys/types.h>\r
40 #include <ctype.h>\r
41 #include <signal.h>\r
42 #include <fcntl.h>\r
43 #include <errno.h>\r
44 #include <time.h>\r
45 #include <stdarg.h>\r
46 #include <stdlib.h>\r
47 #include <stdio.h>\r
48 #include <io.h>\r
49 #include "complib/cl_byteswap.h"\r
50 #include "complib/cl_memory.h"\r
51 #include "complib/cl_debug.h"\r
52 #include "complib/cl_types.h"\r
53 #include "iba/ib_types.h"\r
54 #include "iba/ib_al.h"\r
55 \r
56 #ifndef MAXPATHLEN\r
57 #define MAXPATHLEN  (128)\r
58 #endif\r
59 \r
60 #ifndef PRIx32\r
61 #define PRIx32 "x"\r
62 #endif\r
63 \r
64 #ifndef PRIX32\r
65 #define PRIX32 "X"\r
66 #endif\r
67 \r
68 #ifndef PRId32\r
69 #define PRId32 "d"\r
70 #endif\r
71 \r
72 #define __be32_to_cpu(s) cl_ntoh32(s)\r
73 #define __cpu_to_be32(s)  __be32_to_cpu(s)\r
74 \r
75 #include "mtcr.h"\r
76 \r
77 /* define some debug helpers  *********************/\r
78 \r
79  extern u_int32_t               g_fw_dbg_lvl;\r
80 \r
81 #define FW_DBG_ERROR    CL_DBG_ERROR\r
82 #define FW_DBG_FULL             CL_DBG_ALL\r
83 #define FW_DBG_TRACE    \r
84 #define FW_ENTER( msg_lvl )                     \\r
85         CL_ENTER( msg_lvl, g_fw_dbg_lvl )\r
86 \r
87 #define FW_EXIT( msg_lvl )                              \\r
88         CL_EXIT( msg_lvl, g_fw_dbg_lvl )\r
89 \r
90 #define FW_TRACE( msg_lvl, msg )                \\r
91         CL_TRACE( msg_lvl, g_fw_dbg_lvl, msg )\r
92 \r
93 #define FW_TRACE_EXIT( msg_lvl, msg )   \\r
94         CL_TRACE_EXIT( msg_lvl, g_fw_dbg_lvl, msg )\r
95 \r
96 #define FW_PRINT( msg_lvl, msg )                \\r
97         CL_PRINT( msg_lvl, g_fw_dbg_lvl, msg )\r
98 /**************************************************/\r
99 struct option\r
100 {\r
101         const char              *long_name;\r
102         unsigned long   flag;\r
103         void                    *pfn_handler;\r
104         char                    short_name;\r
105 };\r
106 \r
107 class FlashCommandLine\r
108 {\r
109 public:\r
110     enum Constants {\r
111         revisionStringLength = 25\r
112     };\r
113     FlashCommandLine();\r
114     FlashCommandLine(int argc, char **argv);\r
115     int32_t  parse(int argc, char **argv);\r
116     enum Options {  none                   =    0x0, \r
117                     silent                 =    0x1, \r
118                     debug                  =    0x2, \r
119                     verify_image           =    0x4, \r
120                     verify_flash           =    0x8, \r
121                     dump_image             =   0x10,\r
122                     dump_flash             =   0x20,\r
123                     burn                   =   0x40,\r
124                     noquery                =   0x80,\r
125                     no_prompts             =  0x100,\r
126                     write_file             =  0x200,\r
127                     show_image_info        =  0x400,\r
128                     show_flash_info        =  0x800,\r
129                     force                  = 0x1000,\r
130                     flash_format           = 0x2000,\r
131                     disable_bestdevice     = 0x4000,\r
132                     burn_invariant_section = 0x8000\r
133                     };\r
134     uint8_t getOptions();\r
135     char *getProgramName();\r
136     char *getDeviceName();\r
137     char *getDefaultDeviceName();\r
138     char *getNodeGUID();\r
139     char *getRawFileName();\r
140     char *getRevisionString();\r
141     bool useDefaultDevice();\r
142     bool useFlashNodeGUID();\r
143     void usage(const char *progname);\r
144     bool isOption(Options opt);\r
145     bool isFlashDeviceOption(void);\r
146 protected:\r
147     void  initialize();\r
148 private:\r
149     int   m_options;\r
150     bool  m_isFlashDeviceOption;\r
151     bool  m_usedefaultdevice;     \r
152     bool  m_readguidsfromflash;    \r
153     char  m_device[MAXPATHLEN];\r
154     char *m_defaultdevice;\r
155     char  m_nodeguidstr[MAXPATHLEN];\r
156     char  m_rawfile[MAXPATHLEN];\r
157     char  m_program[MAXPATHLEN];\r
158     char  m_revision[revisionStringLength];\r
159 };\r
160 #endif\r