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