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