10 FILE_LICENCE ( GPL2_OR_LATER );
12 #include <ipxe/list.h>
13 #include <ipxe/refcnt.h>
15 /** A form parameter list */
17 /** Reference count */
19 /** List of all parameter lists */
20 struct list_head list;
24 struct list_head entries;
27 /** A form parameter */
29 /** List of form parameters */
30 struct list_head list;
38 * Increment form parameter list reference count
40 * @v params Parameter list, or NULL
41 * @ret params Parameter list as passed in
43 static inline __attribute__ (( always_inline )) struct parameters *
44 params_get ( struct parameters *params ) {
45 ref_get ( ¶ms->refcnt );
50 * Decrement form parameter list reference count
52 * @v params Parameter list, or NULL
54 static inline __attribute__ (( always_inline )) void
55 params_put ( struct parameters *params ) {
56 ref_put ( ¶ms->refcnt );
60 * Claim ownership of form parameter list
62 * @v params Parameter list
63 * @ret params Parameter list
65 static inline __attribute__ (( always_inline )) struct parameters *
66 claim_parameters ( struct parameters *params ) {
68 /* Remove from list of parameter lists */
69 list_del ( ¶ms->list );
74 /** Iterate over all form parameters in a list */
75 #define for_each_param( param, params ) \
76 list_for_each_entry ( (param), &(params)->entries, list )
78 extern struct parameters * find_parameters ( const char *name );
79 extern struct parameters * create_parameters ( const char *name );
80 extern struct parameter * add_parameter ( struct parameters *params,
81 const char *key, const char *value );
83 #endif /* _IPXE_PARAMS_H */