iPXE
params.h
Go to the documentation of this file.
1 #ifndef _IPXE_PARAMS_H
2 #define _IPXE_PARAMS_H
3 
4 /** @file
5  *
6  * Request parameters
7  *
8  */
9 
10 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
11 FILE_SECBOOT ( PERMITTED );
12 
13 #include <ipxe/list.h>
14 #include <ipxe/refcnt.h>
15 
16 /** A request parameter list */
17 struct parameters {
18  /** Reference count */
19  struct refcnt refcnt;
20  /** List of all parameter lists */
21  struct list_head list;
22  /** Name */
23  const char *name;
24  /** Parameters */
26 };
27 
28 /** A request parameter */
29 struct parameter {
30  /** List of request parameters */
31  struct list_head list;
32  /** Key */
33  const char *key;
34  /** Value */
35  const char *value;
36  /** Flags */
37  unsigned int flags;
38 };
39 
40 /** Request parameter is a form parameter */
41 #define PARAMETER_FORM 0x0001
42 
43 /** Request parameter is a header parameter */
44 #define PARAMETER_HEADER 0x0002
45 
46 /**
47  * Increment request parameter list reference count
48  *
49  * @v params Parameter list, or NULL
50  * @ret params Parameter list as passed in
51  */
52 static inline __attribute__ (( always_inline )) struct parameters *
53 params_get ( struct parameters *params ) {
54  ref_get ( &params->refcnt );
55  return params;
56 }
57 
58 /**
59  * Decrement request parameter list reference count
60  *
61  * @v params Parameter list, or NULL
62  */
63 static inline __attribute__ (( always_inline )) void
64 params_put ( struct parameters *params ) {
65  ref_put ( &params->refcnt );
66 }
67 
68 /**
69  * Claim ownership of request parameter list
70  *
71  * @v params Parameter list
72  * @ret params Parameter list
73  */
74 static inline __attribute__ (( always_inline )) struct parameters *
75 claim_parameters ( struct parameters *params ) {
76 
77  /* Remove from list of parameter lists */
78  list_del ( &params->list );
79 
80  return params;
81 }
82 
83 /** Iterate over all request parameters in a list */
84 #define for_each_param( param, params ) \
85  list_for_each_entry ( (param), &(params)->entries, list )
86 
87 extern struct parameters * find_parameters ( const char *name );
88 extern struct parameters * create_parameters ( const char *name );
89 extern struct parameter * add_parameter ( struct parameters *params,
90  const char *key, const char *value,
91  unsigned int flags );
92 
93 #endif /* _IPXE_PARAMS_H */
const char * name
Definition: ath9k_hw.c:1986
FILE_SECBOOT(PERMITTED)
struct parameters * find_parameters(const char *name)
Find request parameter list by name.
Definition: params.c:69
A request parameter list.
Definition: params.h:17
unsigned int flags
Flags.
Definition: params.h:37
struct parameters * create_parameters(const char *name)
Create request parameter list.
Definition: params.c:87
A doubly-linked list entry (or list head)
Definition: list.h:19
A reference counter.
Definition: refcnt.h:27
#define list_del(list)
Delete an entry from a list.
Definition: list.h:120
struct refcnt refcnt
Reference count.
Definition: params.h:19
struct parameter * add_parameter(struct parameters *params, const char *key, const char *value, unsigned int flags)
Add request parameter.
Definition: params.c:130
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
Linked lists.
uint8_t flags
Flags.
Definition: ena.h:18
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
#define ref_get(refcnt)
Get additional reference to object.
Definition: refcnt.h:93
struct list_head entries
Parameters.
Definition: params.h:25
struct list_head list
List of request parameters.
Definition: params.h:31
const char * name
Name.
Definition: params.h:23
struct list_head list
List of all parameter lists.
Definition: params.h:21
static __attribute__((always_inline)) struct parameters *params_get(struct parameters *params)
Increment request parameter list reference count.
Definition: params.h:52
Reference counting.
const char * value
Value.
Definition: params.h:35
A request parameter.
Definition: params.h:29
const char * key
Key.
Definition: params.h:33
union @391 key
Sense key.
Definition: scsi.h:18
#define ref_put(refcnt)
Drop reference to object.
Definition: refcnt.h:107