From a748b72e3c4a2a482d2325004523bab299de25a3 Mon Sep 17 00:00:00 2001 From: X512 Date: Wed, 26 May 2021 22:23:38 +0900 Subject: [PATCH] AutoDeleter: add VMAddressSpacePutter, DeviceNodePutter Change-Id: I705de24f6a87287943814e748d5a02e43b029e60 Reviewed-on: https://review.haiku-os.org/c/haiku/+/3987 Reviewed-by: Alex von Gluck IV --- headers/private/shared/AutoDeleterDrivers.h | 33 +++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/headers/private/shared/AutoDeleterDrivers.h b/headers/private/shared/AutoDeleterDrivers.h index c290ede37f..939fdaf4a0 100644 --- a/headers/private/shared/AutoDeleterDrivers.h +++ b/headers/private/shared/AutoDeleterDrivers.h @@ -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 #include + #if defined(_KERNEL_MODE) && !defined(_BOOT_MODE) #include #include +#include +#include #endif namespace BPrivate { -typedef CObjectDeleter DriverSettingsUnloader; +typedef CObjectDeleter + DriverSettingsUnloader; #if defined(_KERNEL_MODE) && !defined(_BOOT_MODE) typedef CObjectDeleter VnodePutter; typedef CObjectDeleter DescriptorPutter; +typedef MethodDeleter + VMAddressSpacePutter; + +#if __GNUC__ >= 4 + +template +using DeviceNodePutter = MethodObjectDeleter; + +#else + +template +struct DeviceNodePutter : MethodObjectDeleter +{ + typedef MethodObjectDeleter 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