18c2aff776a775d34a4c9893a4c72e0434d68e36artem/***************************************************************************
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * hotplug.h : definitions for HAL-internal hotplug events
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Copyright 2006 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 HOTPLUG_H
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define HOTPLUG_H
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <glib.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "../device.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "../util.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "devinfo.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef enum {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem HOTPLUG_ACTION_ADD,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem HOTPLUG_ACTION_REMOVE,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem} HotplugActionType;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef enum {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem HOTPLUG_EVENT_DEVFS = 0,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem} HotplugEventType;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/** Data structure representing a hotplug event; also used for
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * coldplugging.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef struct
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem HotplugActionType action; /**< Whether the event is add or remove */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem HotplugEventType type; /**< Type of hotplug event */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem HalDevice *d;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem union {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem struct {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem char devfs_path[HAL_PATH_MAX];
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DevinfoDevHandler *handler;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem } devfs;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem } un;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem} HotplugEvent;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid hotplug_event_enqueue (HotplugEvent *event, int front);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid hotplug_event_process_queue (void);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid hotplug_event_end (void *end_token);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid hotplug_queue_now_empty (void);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#endif /* HOTPLUG_H */