xref: /onnv-gate/usr/src/cmd/hal/hald/solaris/devinfo.h (revision 3536:37a09cbc96ba)
12912Sartem /***************************************************************************
22912Sartem  *
32912Sartem  * devinfo.h : definitions for libdevinfo-based device enumeration
42912Sartem  *
5*3536Sjacobs  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
62912Sartem  * Use is subject to license terms.
72912Sartem  *
82912Sartem  * Licensed under the Academic Free License version 2.1
92912Sartem  *
102912Sartem  **************************************************************************/
112912Sartem 
122916Sartem #pragma ident	"%Z%%M%	%I%	%E% SMI"
132912Sartem 
142912Sartem #ifndef DEVINFO_H
152912Sartem #define DEVINFO_H
162912Sartem 
172912Sartem #include <glib.h>
182912Sartem #include <libdevinfo.h>
192912Sartem 
202912Sartem #include "../hald.h"
212912Sartem #include "../device_info.h"
222912Sartem 
232912Sartem typedef struct DevinfoDevHandler_s
242912Sartem {
252912Sartem 	HalDevice *(*add) (HalDevice *parent, di_node_t node, char *devfs_path, char *device_type);
262912Sartem 
272912Sartem 	/* yet unused */
282912Sartem 	void (*remove) (char *devfs_path);
292912Sartem 
302912Sartem 	void (*hotplug_begin_add) (HalDevice *d, HalDevice *parent, struct DevinfoDevHandler_s *handler, void *end_token);
312912Sartem 
322912Sartem 	void (*hotplug_begin_remove) (HalDevice *d, struct DevinfoDevHandler_s *handler, void *end_token);
332912Sartem 
342912Sartem 	void (*probing_done) (HalDevice *d, guint32 exit_type, gint return_code, char **error, gpointer userdata1, gpointer userdata2);
352912Sartem 
362912Sartem 	const gchar *(*get_prober) (HalDevice *d, int *timeout);
372912Sartem } DevinfoDevHandler;
382912Sartem 
392912Sartem #define PROP_INT(d, node, v, diprop, halprop) \
402912Sartem 	if (di_prop_lookup_ints(DDI_DEV_T_ANY, node, diprop, &(v)) > 0) { \
412912Sartem 		hal_device_property_set_int (d, halprop, *(v)); \
422912Sartem 	}
432912Sartem 
442912Sartem #define PROP_STR(d, node, v, diprop, halprop) \
452912Sartem 	if (di_prop_lookup_strings(DDI_DEV_T_ANY, node, diprop, &(v)) > 0) { \
462912Sartem 		hal_device_property_set_string (d, halprop, v); \
472912Sartem 	}
482912Sartem 
492912Sartem #define PROP_BOOL(d, node, v, diprop, halprop) \
502912Sartem 	hal_device_property_set_bool (d, halprop, \
512912Sartem 	    (di_prop_lookup_ints(DDI_DEV_T_ANY, node, diprop, &(v)) >= 0));
522912Sartem 
532912Sartem #define	NELEM(a)	(sizeof (a) / sizeof (*(a)))
542912Sartem 
552912Sartem void devinfo_add (HalDevice *parent, gchar *path);
562912Sartem void devinfo_set_default_properties (HalDevice *d, HalDevice *parent, di_node_t node, char *devfs_path);
572912Sartem void devinfo_callouts_preprobing_done (HalDevice *d, gpointer userdata1, gpointer userdata2);
582912Sartem void devinfo_callouts_probing_done (HalDevice *d, guint32 exit_type, gint return_code, char **error,
592912Sartem 	gpointer userdata1, gpointer userdata2);
602912Sartem void devinfo_callouts_add_done (HalDevice *d, gpointer userdata1, gpointer userdata2);
612912Sartem void devinfo_callouts_remove_done (HalDevice *d, gpointer userdata1, gpointer userdata2);
622912Sartem void hotplug_event_begin_add_devinfo (HalDevice *d, HalDevice *parent, DevinfoDevHandler *handler, void *end_token);
632912Sartem void devinfo_remove (gchar *path);
642912Sartem void devinfo_remove_branch (gchar *path, HalDevice *d);
652912Sartem void hotplug_event_begin_remove_devinfo (HalDevice *d, gchar *devfs_path, void *end_token);
662912Sartem void devinfo_hotplug_enqueue(HalDevice *d, gchar *devfs_path, DevinfoDevHandler *handler, int action, int front);
672912Sartem void devinfo_add_enqueue(HalDevice *d, gchar *devfs_path, DevinfoDevHandler *handler);
682912Sartem void devinfo_add_enqueue_at_front(HalDevice *d, gchar *devfs_path, DevinfoDevHandler *handler);
692912Sartem void devinfo_remove_enqueue(gchar *devfs_path, DevinfoDevHandler *handler);
702912Sartem gboolean devinfo_device_rescan (HalDevice *d);
71*3536Sjacobs char *get_devlink(di_devlink_handle_t devlink_hdl, char *re, char *path);
72*3536Sjacobs 
732912Sartem 
742912Sartem #endif /* DEVINFO_H */
75