hotplug.h revision 2912:85ea316d9c18
1/***************************************************************************
2 *
3 * hotplug.h : definitions for HAL-internal hotplug events
4 *
5 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
6 * Use is subject to license terms.
7 *
8 * Licensed under the Academic Free License version 2.1
9 *
10 **************************************************************************/
11
12#pragma	ident	"%Z%%M%	%I%	%E% SMI"
13
14#ifndef HOTPLUG_H
15#define HOTPLUG_H
16
17#include <glib.h>
18
19#include "../device.h"
20#include "../util.h"
21
22#include "devinfo.h"
23
24typedef enum {
25	HOTPLUG_ACTION_ADD,
26	HOTPLUG_ACTION_REMOVE,
27} HotplugActionType;
28
29typedef enum {
30	HOTPLUG_EVENT_DEVFS       = 0,
31} HotplugEventType;
32
33/** Data structure representing a hotplug event; also used for
34 *  coldplugging.
35 */
36typedef struct
37{
38	HotplugActionType action;               /**< Whether the event is add or remove */
39	HotplugEventType type;                  /**< Type of hotplug event */
40
41	HalDevice *d;
42
43	union {
44		struct {
45			char devfs_path[HAL_PATH_MAX];
46			DevinfoDevHandler *handler;
47		} devfs;
48	} un;
49
50} HotplugEvent;
51
52void hotplug_event_enqueue (HotplugEvent *event, int front);
53
54void hotplug_event_process_queue (void);
55
56void hotplug_event_end (void *end_token);
57
58void hotplug_queue_now_empty (void);
59
60#endif /* HOTPLUG_H */
61