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