mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			126 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 2faf4aa457b6e5ad06aefbe7559aaf066ac12788 Mon Sep 17 00:00:00 2001
 | |
| From: Maxime Ripard <maxime@cerno.tech>
 | |
| Date: Mon, 21 Nov 2022 11:11:52 +0100
 | |
| Subject: [PATCH] drm/tests: helpers: Create the device in another function
 | |
| MIME-Version: 1.0
 | |
| Content-Type: text/plain; charset=UTF-8
 | |
| Content-Transfer-Encoding: 8bit
 | |
| 
 | |
| We'll need in some tests to control when the device needs to be added
 | |
| and removed, so let's split the device creation from the DRM device
 | |
| creation function.
 | |
| 
 | |
| Reviewed-by: Maíra Canal <mcanal@igalia.com>
 | |
| Signed-off-by: Maxime Ripard <maxime@cerno.tech>
 | |
| ---
 | |
|  drivers/gpu/drm/tests/drm_kunit_helpers.c | 56 +++++++++++++----------
 | |
|  include/drm/drm_kunit_helpers.h           |  5 +-
 | |
|  2 files changed, 37 insertions(+), 24 deletions(-)
 | |
| 
 | |
| --- a/drivers/gpu/drm/tests/drm_kunit_helpers.c
 | |
| +++ b/drivers/gpu/drm/tests/drm_kunit_helpers.c
 | |
| @@ -17,36 +17,51 @@ struct kunit_dev {
 | |
|  static const struct drm_mode_config_funcs drm_mode_config_funcs = {
 | |
|  };
 | |
|  
 | |
| -static int dev_init(struct kunit_resource *res, void *ptr)
 | |
| +/**
 | |
| + * drm_kunit_helper_alloc_device - Allocate a mock device for a KUnit test
 | |
| + * @test: The test context object
 | |
| + *
 | |
| + * This allocates a fake struct &device to create a mock for a KUnit
 | |
| + * test.
 | |
| + *
 | |
| + * Callers need to make sure drm_kunit_helper_free_device() on the
 | |
| + * device when done.
 | |
| + *
 | |
| + * Returns:
 | |
| + * A pointer to the new device, or an ERR_PTR() otherwise.
 | |
| + */
 | |
| +struct device *drm_kunit_helper_alloc_device(struct kunit *test)
 | |
|  {
 | |
| -	char *name = ptr;
 | |
| -	struct device *dev;
 | |
| -
 | |
| -	dev = root_device_register(name);
 | |
| -	if (IS_ERR(dev))
 | |
| -		return PTR_ERR(dev);
 | |
| -
 | |
| -	res->data = dev;
 | |
| -	return 0;
 | |
| +	return root_device_register(KUNIT_DEVICE_NAME);
 | |
|  }
 | |
| +EXPORT_SYMBOL_GPL(drm_kunit_helper_alloc_device);
 | |
|  
 | |
| -static void dev_free(struct kunit_resource *res)
 | |
| +/**
 | |
| + * drm_kunit_helper_free_device - Frees a mock device
 | |
| + * @test: The test context object
 | |
| + * @dev: The device to free
 | |
| + *
 | |
| + * Frees a device allocated with drm_kunit_helper_alloc_device().
 | |
| + */
 | |
| +void drm_kunit_helper_free_device(struct kunit *test, struct device *dev)
 | |
|  {
 | |
| -	struct device *dev = res->data;
 | |
| -
 | |
|  	root_device_unregister(dev);
 | |
|  }
 | |
| +EXPORT_SYMBOL_GPL(drm_kunit_helper_free_device);
 | |
|  
 | |
|  /**
 | |
|   * drm_kunit_helper_alloc_drm_device - Allocates a mock DRM device for KUnit tests
 | |
|   * @test: The test context object
 | |
| + * @dev: The parent device object
 | |
|   * @features: Mocked DRM device driver features
 | |
|   *
 | |
| - * This function allocates a new struct &device, creates a struct
 | |
| - * &drm_driver and will create a struct &drm_device using both.
 | |
| + * This function creates a struct &drm_driver and will create a struct
 | |
| + * &drm_device from @dev and that driver.
 | |
|   *
 | |
| - * The device and driver are tied to the @test context and will get
 | |
| - * cleaned at the end of the test. The drm_device is allocated through
 | |
| + * @dev should be allocated using drm_kunit_helper_alloc_device().
 | |
| + *
 | |
| + * The driver is tied to the @test context and will get cleaned at the
 | |
| + * end of the test. The drm_device is allocated through
 | |
|   * devm_drm_dev_alloc() and will thus be freed through a device-managed
 | |
|   * resource.
 | |
|   *
 | |
| @@ -54,19 +69,14 @@ static void dev_free(struct kunit_resour
 | |
|   * A pointer to the new drm_device, or an ERR_PTR() otherwise.
 | |
|   */
 | |
|  struct drm_device *
 | |
| -drm_kunit_helper_alloc_drm_device(struct kunit *test,
 | |
| +drm_kunit_helper_alloc_drm_device(struct kunit *test, struct device *dev,
 | |
|  				  u32 features)
 | |
|  {
 | |
|  	struct kunit_dev *kdev;
 | |
|  	struct drm_device *drm;
 | |
|  	struct drm_driver *driver;
 | |
| -	struct device *dev;
 | |
|  	int ret;
 | |
|  
 | |
| -	dev = kunit_alloc_resource(test, dev_init, dev_free, GFP_KERNEL, KUNIT_DEVICE_NAME);
 | |
| -	if (!dev)
 | |
| -		return ERR_PTR(-ENOMEM);
 | |
| -
 | |
|  	driver = kunit_kzalloc(test, sizeof(*driver), GFP_KERNEL);
 | |
|  	if (!driver)
 | |
|  		return ERR_PTR(-ENOMEM);
 | |
| --- a/include/drm/drm_kunit_helpers.h
 | |
| +++ b/include/drm/drm_kunit_helpers.h
 | |
| @@ -6,8 +6,11 @@
 | |
|  struct drm_device;
 | |
|  struct kunit;
 | |
|  
 | |
| +struct device *drm_kunit_helper_alloc_device(struct kunit *test);
 | |
| +void drm_kunit_helper_free_device(struct kunit *test, struct device *dev);
 | |
| +
 | |
|  struct drm_device *
 | |
| -drm_kunit_helper_alloc_drm_device(struct kunit *test,
 | |
| +drm_kunit_helper_alloc_drm_device(struct kunit *test, struct device *dev,
 | |
|  				  u32 features);
 | |
|  
 | |
|  #endif // DRM_KUNIT_HELPERS_H_
 |