AutoDeleter: add VMAddressSpacePutter, DeviceNodePutter
Change-Id: I705de24f6a87287943814e748d5a02e43b029e60 Reviewed-on: https://review.haiku-os.org/c/haiku/+/3987 Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
This commit is contained in:
parent
058b29ac34
commit
a748b72e3c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2020, Haiku, Inc.
|
||||
* Copyright 2020, Haiku, Inc. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef _AUTO_DELETER_DRIVERS_H
|
||||
@ -8,21 +8,48 @@
|
||||
|
||||
#include <AutoDeleter.h>
|
||||
#include <driver_settings.h>
|
||||
|
||||
#if defined(_KERNEL_MODE) && !defined(_BOOT_MODE)
|
||||
#include <vfs.h>
|
||||
#include <fs/fd.h>
|
||||
#include <vm/VMAddressSpace.h>
|
||||
#include <device_manager.h>
|
||||
#endif
|
||||
|
||||
|
||||
namespace BPrivate {
|
||||
|
||||
|
||||
typedef CObjectDeleter<void, status_t, unload_driver_settings> DriverSettingsUnloader;
|
||||
typedef CObjectDeleter<void, status_t, unload_driver_settings>
|
||||
DriverSettingsUnloader;
|
||||
|
||||
#if defined(_KERNEL_MODE) && !defined(_BOOT_MODE)
|
||||
|
||||
typedef CObjectDeleter<struct vnode, void, vfs_put_vnode> VnodePutter;
|
||||
typedef CObjectDeleter<file_descriptor, void, put_fd> DescriptorPutter;
|
||||
typedef MethodDeleter<VMAddressSpace, void, &VMAddressSpace::Put>
|
||||
VMAddressSpacePutter;
|
||||
|
||||
#if __GNUC__ >= 4
|
||||
|
||||
template <device_manager_info **deviceManager>
|
||||
using DeviceNodePutter = MethodObjectDeleter<device_node, device_manager_info,
|
||||
deviceManager, void, &device_manager_info::put_node>;
|
||||
|
||||
#else
|
||||
|
||||
template <device_manager_info **deviceManager>
|
||||
struct DeviceNodePutter : MethodObjectDeleter<device_node, device_manager_info,
|
||||
deviceManager, void, &device_manager_info::put_node>
|
||||
{
|
||||
typedef MethodObjectDeleter<device_node, device_manager_info,
|
||||
deviceManager, void, &device_manager_info::put_node> Base;
|
||||
|
||||
DeviceNodePutter() : Base() {}
|
||||
DeviceNodePutter(device_node* object) : Base(object) {}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@ -36,6 +63,8 @@ using ::BPrivate::DriverSettingsUnloader;
|
||||
|
||||
using ::BPrivate::VnodePutter;
|
||||
using ::BPrivate::DescriptorPutter;
|
||||
using ::BPrivate::VMAddressSpacePutter;
|
||||
using ::BPrivate::DeviceNodePutter;
|
||||
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user