12912Sartem /*************************************************************************** 22912Sartem * 32912Sartem * hotplug.h : definitions for HAL-internal hotplug events 42912Sartem * 52912Sartem * Copyright 2006 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 12*2916Sartem #pragma ident "%Z%%M% %I% %E% SMI" 132912Sartem 142912Sartem #ifndef HOTPLUG_H 152912Sartem #define HOTPLUG_H 162912Sartem 172912Sartem #include <glib.h> 182912Sartem 192912Sartem #include "../device.h" 202912Sartem #include "../util.h" 212912Sartem 222912Sartem #include "devinfo.h" 232912Sartem 242912Sartem typedef enum { 252912Sartem HOTPLUG_ACTION_ADD, 262912Sartem HOTPLUG_ACTION_REMOVE, 272912Sartem } HotplugActionType; 282912Sartem 292912Sartem typedef enum { 302912Sartem HOTPLUG_EVENT_DEVFS = 0, 312912Sartem } HotplugEventType; 322912Sartem 332912Sartem /** Data structure representing a hotplug event; also used for 342912Sartem * coldplugging. 352912Sartem */ 362912Sartem typedef struct 372912Sartem { 382912Sartem HotplugActionType action; /**< Whether the event is add or remove */ 392912Sartem HotplugEventType type; /**< Type of hotplug event */ 402912Sartem 412912Sartem HalDevice *d; 422912Sartem 432912Sartem union { 442912Sartem struct { 452912Sartem char devfs_path[HAL_PATH_MAX]; 462912Sartem DevinfoDevHandler *handler; 472912Sartem } devfs; 482912Sartem } un; 492912Sartem 502912Sartem } HotplugEvent; 512912Sartem 522912Sartem void hotplug_event_enqueue (HotplugEvent *event, int front); 532912Sartem 542912Sartem void hotplug_event_process_queue (void); 552912Sartem 562912Sartem void hotplug_event_end (void *end_token); 572912Sartem 582912Sartem void hotplug_queue_now_empty (void); 592912Sartem 602912Sartem #endif /* HOTPLUG_H */ 61