18c2aff776a775d34a4c9893a4c72e0434d68e36artem/***************************************************************************
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * devinfo.h : definitions for libdevinfo-based device enumeration
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
42a7bded1b1244af097afdc88654381a3d3879f9jacobs * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Use is subject to license terms.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Licensed under the Academic Free License version 2.1
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem **************************************************************************/
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
92f381329ebf1c2209df9608670666b32b291e05artem#pragma ident "%Z%%M% %I% %E% SMI"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#ifndef DEVINFO_H
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define DEVINFO_H
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <glib.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <libdevinfo.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "../hald.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "../device_info.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef struct DevinfoDevHandler_s
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem HalDevice *(*add) (HalDevice *parent, di_node_t node, char *devfs_path, char *device_type);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem /* yet unused */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem void (*remove) (char *devfs_path);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem void (*hotplug_begin_add) (HalDevice *d, HalDevice *parent, struct DevinfoDevHandler_s *handler, void *end_token);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem void (*hotplug_begin_remove) (HalDevice *d, struct DevinfoDevHandler_s *handler, void *end_token);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem void (*probing_done) (HalDevice *d, guint32 exit_type, gint return_code, char **error, gpointer userdata1, gpointer userdata2);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const gchar *(*get_prober) (HalDevice *d, int *timeout);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem} DevinfoDevHandler;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define PROP_INT(d, node, v, diprop, halprop) \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (di_prop_lookup_ints(DDI_DEV_T_ANY, node, diprop, &(v)) > 0) { \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_set_int (d, halprop, *(v)); \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define PROP_STR(d, node, v, diprop, halprop) \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (di_prop_lookup_strings(DDI_DEV_T_ANY, node, diprop, &(v)) > 0) { \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_set_string (d, halprop, v); \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define PROP_BOOL(d, node, v, diprop, halprop) \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem hal_device_property_set_bool (d, halprop, \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem (di_prop_lookup_ints(DDI_DEV_T_ANY, node, diprop, &(v)) >= 0));
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define NELEM(a) (sizeof (a) / sizeof (*(a)))
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid devinfo_add (HalDevice *parent, gchar *path);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid devinfo_set_default_properties (HalDevice *d, HalDevice *parent, di_node_t node, char *devfs_path);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid devinfo_callouts_preprobing_done (HalDevice *d, gpointer userdata1, gpointer userdata2);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid devinfo_callouts_probing_done (HalDevice *d, guint32 exit_type, gint return_code, char **error,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem gpointer userdata1, gpointer userdata2);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid devinfo_callouts_add_done (HalDevice *d, gpointer userdata1, gpointer userdata2);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid devinfo_callouts_remove_done (HalDevice *d, gpointer userdata1, gpointer userdata2);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid hotplug_event_begin_add_devinfo (HalDevice *d, HalDevice *parent, DevinfoDevHandler *handler, void *end_token);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid devinfo_remove (gchar *path);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid devinfo_remove_branch (gchar *path, HalDevice *d);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid hotplug_event_begin_remove_devinfo (HalDevice *d, gchar *devfs_path, void *end_token);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid devinfo_hotplug_enqueue(HalDevice *d, gchar *devfs_path, DevinfoDevHandler *handler, int action, int front);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid devinfo_add_enqueue(HalDevice *d, gchar *devfs_path, DevinfoDevHandler *handler);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid devinfo_add_enqueue_at_front(HalDevice *d, gchar *devfs_path, DevinfoDevHandler *handler);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid devinfo_remove_enqueue(gchar *devfs_path, DevinfoDevHandler *handler);
18c2aff776a775d34a4c9893a4c72e0434d68e36artemgboolean devinfo_device_rescan (HalDevice *d);
42a7bded1b1244af097afdc88654381a3d3879f9jacobschar *get_devlink(di_devlink_handle_t devlink_hdl, char *re, char *path);
42a7bded1b1244af097afdc88654381a3d3879f9jacobs
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#endif /* DEVINFO_H */