112527SChris.Kirby@oracle.com /* 212527SChris.Kirby@oracle.com * CDDL HEADER START 312527SChris.Kirby@oracle.com * 412527SChris.Kirby@oracle.com * The contents of this file are subject to the terms of the 512527SChris.Kirby@oracle.com * Common Development and Distribution License (the "License"). 612527SChris.Kirby@oracle.com * You may not use this file except in compliance with the License. 712527SChris.Kirby@oracle.com * 812527SChris.Kirby@oracle.com * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 912527SChris.Kirby@oracle.com * or http://www.opensolaris.org/os/licensing. 1012527SChris.Kirby@oracle.com * See the License for the specific language governing permissions 1112527SChris.Kirby@oracle.com * and limitations under the License. 1212527SChris.Kirby@oracle.com * 1312527SChris.Kirby@oracle.com * When distributing Covered Code, include this CDDL HEADER in each 1412527SChris.Kirby@oracle.com * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1512527SChris.Kirby@oracle.com * If applicable, add the following below this CDDL HEADER, with the 1612527SChris.Kirby@oracle.com * fields enclosed by brackets "[]" replaced with your own identifying 1712527SChris.Kirby@oracle.com * information: Portions Copyright [yyyy] [name of copyright owner] 1812527SChris.Kirby@oracle.com * 1912527SChris.Kirby@oracle.com * CDDL HEADER END 2012527SChris.Kirby@oracle.com */ 2112527SChris.Kirby@oracle.com 2212527SChris.Kirby@oracle.com /* 2312527SChris.Kirby@oracle.com * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. 2412527SChris.Kirby@oracle.com */ 2512527SChris.Kirby@oracle.com 2612527SChris.Kirby@oracle.com #ifndef _SYS_ZFS_ONEXIT_H 2712527SChris.Kirby@oracle.com #define _SYS_ZFS_ONEXIT_H 2812527SChris.Kirby@oracle.com 2912527SChris.Kirby@oracle.com #include <sys/zfs_context.h> 3012527SChris.Kirby@oracle.com 3112527SChris.Kirby@oracle.com #ifdef __cplusplus 3212527SChris.Kirby@oracle.com extern "C" { 3312527SChris.Kirby@oracle.com #endif 3412527SChris.Kirby@oracle.com 3512527SChris.Kirby@oracle.com #ifdef _KERNEL 3612527SChris.Kirby@oracle.com 3712527SChris.Kirby@oracle.com typedef struct zfs_onexit { 3812527SChris.Kirby@oracle.com kmutex_t zo_lock; 3912527SChris.Kirby@oracle.com list_t zo_actions; 4012527SChris.Kirby@oracle.com } zfs_onexit_t; 4112527SChris.Kirby@oracle.com 4212527SChris.Kirby@oracle.com typedef struct zfs_onexit_action_node { 4312527SChris.Kirby@oracle.com list_node_t za_link; 4412527SChris.Kirby@oracle.com void (*za_func)(void *); 4512527SChris.Kirby@oracle.com void *za_data; 4612527SChris.Kirby@oracle.com } zfs_onexit_action_node_t; 4712527SChris.Kirby@oracle.com 4812527SChris.Kirby@oracle.com extern void zfs_onexit_init(zfs_onexit_t **zo); 4912527SChris.Kirby@oracle.com extern void zfs_onexit_destroy(zfs_onexit_t *zo); 5012527SChris.Kirby@oracle.com 5112527SChris.Kirby@oracle.com #endif 5212527SChris.Kirby@oracle.com 53*12786SChris.Kirby@oracle.com extern int zfs_onexit_fd_hold(int fd, minor_t *minorp); 54*12786SChris.Kirby@oracle.com extern void zfs_onexit_fd_rele(int fd); 55*12786SChris.Kirby@oracle.com extern int zfs_onexit_add_cb(minor_t minor, void (*func)(void *), void *data, 5612527SChris.Kirby@oracle.com uint64_t *action_handle); 57*12786SChris.Kirby@oracle.com extern int zfs_onexit_del_cb(minor_t minor, uint64_t action_handle, 58*12786SChris.Kirby@oracle.com boolean_t fire); 59*12786SChris.Kirby@oracle.com extern int zfs_onexit_cb_data(minor_t minor, uint64_t action_handle, 60*12786SChris.Kirby@oracle.com void **data); 6112527SChris.Kirby@oracle.com 6212527SChris.Kirby@oracle.com #ifdef __cplusplus 6312527SChris.Kirby@oracle.com } 6412527SChris.Kirby@oracle.com #endif 6512527SChris.Kirby@oracle.com 6612527SChris.Kirby@oracle.com #endif /* _SYS_ZFS_ONEXIT_H */ 67