1*18c2aff7Sartem /* 2*18c2aff7Sartem * CDDL HEADER START 3*18c2aff7Sartem * 4*18c2aff7Sartem * The contents of this file are subject to the terms of the 5*18c2aff7Sartem * Common Development and Distribution License (the "License"). 6*18c2aff7Sartem * You may not use this file except in compliance with the License. 7*18c2aff7Sartem * 8*18c2aff7Sartem * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*18c2aff7Sartem * or http://www.opensolaris.org/os/licensing. 10*18c2aff7Sartem * See the License for the specific language governing permissions 11*18c2aff7Sartem * and limitations under the License. 12*18c2aff7Sartem * 13*18c2aff7Sartem * When distributing Covered Code, include this CDDL HEADER in each 14*18c2aff7Sartem * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*18c2aff7Sartem * If applicable, add the following below this CDDL HEADER, with the 16*18c2aff7Sartem * fields enclosed by brackets "[]" replaced with your own identifying 17*18c2aff7Sartem * information: Portions Copyright [yyyy] [name of copyright owner] 18*18c2aff7Sartem * 19*18c2aff7Sartem * CDDL HEADER END 20*18c2aff7Sartem */ 21*18c2aff7Sartem /* 22*18c2aff7Sartem * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 23*18c2aff7Sartem * Use is subject to license terms. 24*18c2aff7Sartem */ 25*18c2aff7Sartem 26*18c2aff7Sartem #ifndef _COMMON_H 27*18c2aff7Sartem #define _COMMON_H 28*18c2aff7Sartem 29*18c2aff7Sartem #pragma ident "%Z%%M% %I% %E% SMI" 30*18c2aff7Sartem 31*18c2aff7Sartem #ifdef __cplusplus 32*18c2aff7Sartem extern "C" { 33*18c2aff7Sartem #endif 34*18c2aff7Sartem 35*18c2aff7Sartem #include <sys/types.h> 36*18c2aff7Sartem #include <unistd.h> 37*18c2aff7Sartem #include <zone.h> 38*18c2aff7Sartem 39*18c2aff7Sartem #include <glib.h> 40*18c2aff7Sartem #include <libhal.h> 41*18c2aff7Sartem #include <libhal-storage.h> 42*18c2aff7Sartem 43*18c2aff7Sartem #include "vold.h" 44*18c2aff7Sartem 45*18c2aff7Sartem typedef enum { 46*18c2aff7Sartem RMM_EOK = 0, 47*18c2aff7Sartem RMM_EDBUS_CONNECT, /* cannot connect to DBUS */ 48*18c2aff7Sartem RMM_EHAL_CONNECT /* cannot connect to HAL */ 49*18c2aff7Sartem } rmm_error_t; 50*18c2aff7Sartem 51*18c2aff7Sartem #define HAL_BRANCH_LOCAL "/org/freedesktop/Hal/devices/local" 52*18c2aff7Sartem 53*18c2aff7Sartem #define NELEM(a) (sizeof (a) / sizeof (*(a))) 54*18c2aff7Sartem 55*18c2aff7Sartem extern char *progname; 56*18c2aff7Sartem 57*18c2aff7Sartem LibHalContext *rmm_hal_init(LibHalDeviceAdded, LibHalDeviceRemoved, 58*18c2aff7Sartem LibHalDevicePropertyModified, DBusError *, rmm_error_t *); 59*18c2aff7Sartem void rmm_hal_fini(LibHalContext *hal_ctx); 60*18c2aff7Sartem 61*18c2aff7Sartem LibHalDrive *rmm_hal_volume_find(LibHalContext *, const char *, 62*18c2aff7Sartem DBusError *, GSList **); 63*18c2aff7Sartem LibHalDrive *rmm_hal_volume_find_default(LibHalContext *, DBusError *, 64*18c2aff7Sartem const char **, GSList **); 65*18c2aff7Sartem LibHalDrive *rmm_hal_volume_findby(LibHalContext *, const char *, 66*18c2aff7Sartem const char *, GSList **); 67*18c2aff7Sartem LibHalDrive *rmm_hal_volume_findby_nickname(LibHalContext *, const char *, 68*18c2aff7Sartem GSList **); 69*18c2aff7Sartem void rmm_print_volume_nicknames(LibHalContext *, DBusError *); 70*18c2aff7Sartem void rmm_volumes_free(GSList *); 71*18c2aff7Sartem 72*18c2aff7Sartem boolean_t rmm_hal_mount(LibHalContext *, const char *, 73*18c2aff7Sartem char **, int, char *, DBusError *); 74*18c2aff7Sartem boolean_t rmm_hal_unmount(LibHalContext *, const char *, DBusError *); 75*18c2aff7Sartem boolean_t rmm_hal_eject(LibHalContext *, const char *, DBusError *); 76*18c2aff7Sartem boolean_t rmm_hal_closetray(LibHalContext *, const char *, DBusError *); 77*18c2aff7Sartem boolean_t rmm_hal_rescan(LibHalContext *, const char *, DBusError *); 78*18c2aff7Sartem boolean_t rmm_hal_claim_branch(LibHalContext *, const char *); 79*18c2aff7Sartem boolean_t rmm_hal_unclaim_branch(LibHalContext *, const char *); 80*18c2aff7Sartem 81*18c2aff7Sartem boolean_t rmm_action(LibHalContext *, const char *name, action_t action, 82*18c2aff7Sartem struct action_arg *aap, char **, int, char *); 83*18c2aff7Sartem boolean_t rmm_rescan(LibHalContext *, const char *, boolean_t); 84*18c2aff7Sartem 85*18c2aff7Sartem void rmm_update_vold_mountpoints(LibHalContext *, const char *, 86*18c2aff7Sartem struct action_arg *); 87*18c2aff7Sartem 88*18c2aff7Sartem boolean_t rmm_volume_aa_from_prop(LibHalContext *, const char *, 89*18c2aff7Sartem LibHalVolume *, struct action_arg *); 90*18c2aff7Sartem void rmm_volume_aa_update_mountpoint(LibHalContext *, const char *, 91*18c2aff7Sartem struct action_arg *aap); 92*18c2aff7Sartem void rmm_volume_aa_free(struct action_arg *); 93*18c2aff7Sartem 94*18c2aff7Sartem char *rmm_get_mnttab_mount_point(const char *); 95*18c2aff7Sartem const char *rmm_strerror(DBusError *, int); 96*18c2aff7Sartem void rmm_dbus_error_free(DBusError *); 97*18c2aff7Sartem 98*18c2aff7Sartem char *rmm_vold_convert_volume_label(const char *name, size_t len); 99*18c2aff7Sartem int makepath(char *, mode_t); 100*18c2aff7Sartem void dprintf(const char *, ...); 101*18c2aff7Sartem 102*18c2aff7Sartem #ifdef __cplusplus 103*18c2aff7Sartem } 104*18c2aff7Sartem #endif 105*18c2aff7Sartem 106*18c2aff7Sartem #endif /* _COMMON_H */ 107