xref: /haiku/headers/os/drivers/driver_settings.h (revision 21258e2674226d6aa732321b6f8494841895af5f)
1 #ifndef _DRIVER_SETTINGS_H
2 #define _DRIVER_SETTINGS_H
3 
4 
5 #include <OS.h>
6 
7 
8 typedef struct driver_parameter {
9 	char *name;
10 	int	value_count;
11 	char **values;
12 	int parameter_count;
13 	struct driver_parameter *parameters;
14 } driver_parameter;
15 
16 typedef struct driver_settings {
17 	int parameter_count;
18 	struct driver_parameter *parameters;
19 } driver_settings;
20 
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 extern void			*load_driver_settings(const char *driverName);
27 extern void			*load_driver_settings_file(int fd);
28 extern status_t		unload_driver_settings(void *handle);
29 
30 extern void			*parse_driver_settings_string(const char *settingsString);
31 extern status_t		get_driver_settings_string(void *_handle, char *buffer,
32 						size_t *_bufferSize, bool flat);
33 extern status_t		delete_driver_settings(void *handle);
34 
35 extern const char	*get_driver_parameter(void *handle, const char *key,
36 						const char *unknownValue,	/* key not present */
37 						const char *noargValue);	/* key has no value */
38 extern bool			get_driver_boolean_parameter(void *handle, const char *key,
39 						bool unknownValue, bool noargValue);
40 
41 extern const driver_settings *get_driver_settings(void *handle);
42 
43 /* Pass this in as drivername to access safe mode settings */
44 #define B_SAFEMODE_DRIVER_SETTINGS	"/safemode/"
45 
46 /* Pass this as the key value to check if safe mode is enabled */
47 #define B_SAFEMODE_SAFE_MODE		"safemode"
48 
49 #ifdef __cplusplus
50 }
51 #endif
52 
53 #endif	/* _DRIVER_SETTINGS_H */
54