1*2912Sartem /*************************************************************************** 2*2912Sartem * 3*2912Sartem * devinfo.h : definitions for libdevinfo-based device enumeration 4*2912Sartem * 5*2912Sartem * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 6*2912Sartem * Use is subject to license terms. 7*2912Sartem * 8*2912Sartem * Licensed under the Academic Free License version 2.1 9*2912Sartem * 10*2912Sartem **************************************************************************/ 11*2912Sartem 12*2912Sartem #pragma ident "%Z%%M% %I% %E% SMI" 13*2912Sartem 14*2912Sartem #ifndef DEVINFO_H 15*2912Sartem #define DEVINFO_H 16*2912Sartem 17*2912Sartem #include <glib.h> 18*2912Sartem #include <libdevinfo.h> 19*2912Sartem 20*2912Sartem #include "../hald.h" 21*2912Sartem #include "../device_info.h" 22*2912Sartem 23*2912Sartem typedef struct DevinfoDevHandler_s 24*2912Sartem { 25*2912Sartem HalDevice *(*add) (HalDevice *parent, di_node_t node, char *devfs_path, char *device_type); 26*2912Sartem 27*2912Sartem /* yet unused */ 28*2912Sartem void (*remove) (char *devfs_path); 29*2912Sartem 30*2912Sartem void (*hotplug_begin_add) (HalDevice *d, HalDevice *parent, struct DevinfoDevHandler_s *handler, void *end_token); 31*2912Sartem 32*2912Sartem void (*hotplug_begin_remove) (HalDevice *d, struct DevinfoDevHandler_s *handler, void *end_token); 33*2912Sartem 34*2912Sartem void (*probing_done) (HalDevice *d, guint32 exit_type, gint return_code, char **error, gpointer userdata1, gpointer userdata2); 35*2912Sartem 36*2912Sartem const gchar *(*get_prober) (HalDevice *d, int *timeout); 37*2912Sartem } DevinfoDevHandler; 38*2912Sartem 39*2912Sartem #define PROP_INT(d, node, v, diprop, halprop) \ 40*2912Sartem if (di_prop_lookup_ints(DDI_DEV_T_ANY, node, diprop, &(v)) > 0) { \ 41*2912Sartem hal_device_property_set_int (d, halprop, *(v)); \ 42*2912Sartem } 43*2912Sartem 44*2912Sartem #define PROP_STR(d, node, v, diprop, halprop) \ 45*2912Sartem if (di_prop_lookup_strings(DDI_DEV_T_ANY, node, diprop, &(v)) > 0) { \ 46*2912Sartem hal_device_property_set_string (d, halprop, v); \ 47*2912Sartem } 48*2912Sartem 49*2912Sartem #define PROP_BOOL(d, node, v, diprop, halprop) \ 50*2912Sartem hal_device_property_set_bool (d, halprop, \ 51*2912Sartem (di_prop_lookup_ints(DDI_DEV_T_ANY, node, diprop, &(v)) >= 0)); 52*2912Sartem 53*2912Sartem #define NELEM(a) (sizeof (a) / sizeof (*(a))) 54*2912Sartem 55*2912Sartem void devinfo_add (HalDevice *parent, gchar *path); 56*2912Sartem void devinfo_set_default_properties (HalDevice *d, HalDevice *parent, di_node_t node, char *devfs_path); 57*2912Sartem void devinfo_callouts_preprobing_done (HalDevice *d, gpointer userdata1, gpointer userdata2); 58*2912Sartem void devinfo_callouts_probing_done (HalDevice *d, guint32 exit_type, gint return_code, char **error, 59*2912Sartem gpointer userdata1, gpointer userdata2); 60*2912Sartem void devinfo_callouts_add_done (HalDevice *d, gpointer userdata1, gpointer userdata2); 61*2912Sartem void devinfo_callouts_remove_done (HalDevice *d, gpointer userdata1, gpointer userdata2); 62*2912Sartem void hotplug_event_begin_add_devinfo (HalDevice *d, HalDevice *parent, DevinfoDevHandler *handler, void *end_token); 63*2912Sartem void devinfo_remove (gchar *path); 64*2912Sartem void devinfo_remove_branch (gchar *path, HalDevice *d); 65*2912Sartem void hotplug_event_begin_remove_devinfo (HalDevice *d, gchar *devfs_path, void *end_token); 66*2912Sartem void devinfo_hotplug_enqueue(HalDevice *d, gchar *devfs_path, DevinfoDevHandler *handler, int action, int front); 67*2912Sartem void devinfo_add_enqueue(HalDevice *d, gchar *devfs_path, DevinfoDevHandler *handler); 68*2912Sartem void devinfo_add_enqueue_at_front(HalDevice *d, gchar *devfs_path, DevinfoDevHandler *handler); 69*2912Sartem void devinfo_remove_enqueue(gchar *devfs_path, DevinfoDevHandler *handler); 70*2912Sartem gboolean devinfo_device_rescan (HalDevice *d); 71*2912Sartem 72*2912Sartem #endif /* DEVINFO_H */ 73