[PATCH libdrm 8/9] amdgpu: hide the final internal functions from global namespace

Emil Velikov emil.l.velikov at gmail.com
Fri Aug 7 09:45:02 PDT 2015


Thus the only symbols that we export are the ones officially provided by
the API.

Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
---
 amdgpu/amdgpu_bo.c       |  2 +-
 amdgpu/amdgpu_cs.c       |  2 +-
 amdgpu/amdgpu_device.c   | 58 ++++++++++++++++++++++++++++++------------------
 amdgpu/amdgpu_gpu_info.c |  2 +-
 amdgpu/amdgpu_internal.h | 24 +++-----------------
 5 files changed, 42 insertions(+), 46 deletions(-)

diff --git a/amdgpu/amdgpu_bo.c b/amdgpu/amdgpu_bo.c
index aacb42c..7607f2c 100644
--- a/amdgpu/amdgpu_bo.c
+++ b/amdgpu/amdgpu_bo.c
@@ -53,7 +53,7 @@ static void amdgpu_close_kms_handle(amdgpu_device_handle dev,
 	drmIoctl(dev->fd, DRM_IOCTL_GEM_CLOSE, &args);
 }
 
-void amdgpu_bo_free_internal(amdgpu_bo_handle bo)
+drm_private void amdgpu_bo_free_internal(amdgpu_bo_handle bo)
 {
 	/* Remove the buffer from the hash tables. */
 	pthread_mutex_lock(&bo->dev->bo_table_mutex);
diff --git a/amdgpu/amdgpu_cs.c b/amdgpu/amdgpu_cs.c
index fd28bd9..ea35326 100644
--- a/amdgpu/amdgpu_cs.c
+++ b/amdgpu/amdgpu_cs.c
@@ -290,7 +290,7 @@ int amdgpu_cs_submit(amdgpu_context_handle context,
  *
  * \return  absolute timeout in nanoseconds
 */
-uint64_t amdgpu_cs_calculate_timeout(uint64_t timeout)
+drm_private uint64_t amdgpu_cs_calculate_timeout(uint64_t timeout)
 {
 	int r;
 
diff --git a/amdgpu/amdgpu_device.c b/amdgpu/amdgpu_device.c
index bf941c1..c6bbae8 100644
--- a/amdgpu/amdgpu_device.c
+++ b/amdgpu/amdgpu_device.c
@@ -47,7 +47,7 @@
 #define PTR_TO_UINT(x) ((unsigned)((intptr_t)(x)))
 #define UINT_TO_PTR(x) ((void *)((intptr_t)(x)))
 
-pthread_mutex_t fd_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t fd_mutex = PTHREAD_MUTEX_INITIALIZER;
 static struct util_hash_table *fd_tab;
 
 static unsigned handle_hash(void *key)
@@ -127,6 +127,41 @@ static int amdgpu_get_auth(int fd, int *auth)
 	return r;
 }
 
+static void amdgpu_device_free_internal(amdgpu_device_handle dev)
+{
+	amdgpu_vamgr_reference(&dev->vamgr, NULL);
+	util_hash_table_destroy(dev->bo_flink_names);
+	util_hash_table_destroy(dev->bo_handles);
+	pthread_mutex_destroy(&dev->bo_table_mutex);
+	util_hash_table_remove(fd_tab, UINT_TO_PTR(dev->fd));
+	close(dev->fd);
+	if ((dev->flink_fd >= 0) && (dev->fd != dev->flink_fd))
+		close(dev->flink_fd);
+	free(dev);
+}
+
+/**
+ * Assignment between two amdgpu_device pointers with reference counting.
+ *
+ * Usage:
+ *    struct amdgpu_device *dst = ... , *src = ...;
+ *
+ *    dst = src;
+ *    // No reference counting. Only use this when you need to move
+ *    // a reference from one pointer to another.
+ *
+ *    amdgpu_device_reference(&dst, src);
+ *    // Reference counters are updated. dst is decremented and src is
+ *    // incremented. dst is freed if its reference counter is 0.
+ */
+static void amdgpu_device_reference(struct amdgpu_device **dst,
+			     struct amdgpu_device *src)
+{
+	if (update_references(&(*dst)->refcount, &src->refcount))
+		amdgpu_device_free_internal(*dst);
+	*dst = src;
+}
+
 int amdgpu_device_initialize(int fd,
 			     uint32_t *major_version,
 			     uint32_t *minor_version,
@@ -232,29 +267,8 @@ cleanup:
 	return r;
 }
 
-void amdgpu_device_free_internal(amdgpu_device_handle dev)
-{
-	amdgpu_vamgr_reference(&dev->vamgr, NULL);
-	util_hash_table_destroy(dev->bo_flink_names);
-	util_hash_table_destroy(dev->bo_handles);
-	pthread_mutex_destroy(&dev->bo_table_mutex);
-	util_hash_table_remove(fd_tab, UINT_TO_PTR(dev->fd));
-	close(dev->fd);
-	if ((dev->flink_fd >= 0) && (dev->fd != dev->flink_fd))
-		close(dev->flink_fd);
-	free(dev);
-}
-
 int amdgpu_device_deinitialize(amdgpu_device_handle dev)
 {
 	amdgpu_device_reference(&dev, NULL);
 	return 0;
 }
-
-void amdgpu_device_reference(struct amdgpu_device **dst,
-			     struct amdgpu_device *src)
-{
-	if (update_references(&(*dst)->refcount, &src->refcount))
-		amdgpu_device_free_internal(*dst);
-	*dst = src;
-}
diff --git a/amdgpu/amdgpu_gpu_info.c b/amdgpu/amdgpu_gpu_info.c
index 0970769..0cc17f1 100644
--- a/amdgpu/amdgpu_gpu_info.c
+++ b/amdgpu/amdgpu_gpu_info.c
@@ -140,7 +140,7 @@ int amdgpu_query_firmware_version(amdgpu_device_handle dev, unsigned fw_type,
 	return 0;
 }
 
-int amdgpu_query_gpu_info_init(amdgpu_device_handle dev)
+drm_private int amdgpu_query_gpu_info_init(amdgpu_device_handle dev)
 {
 	int r, i;
 
diff --git a/amdgpu/amdgpu_internal.h b/amdgpu/amdgpu_internal.h
index 7f86da9..4b07aff 100644
--- a/amdgpu/amdgpu_internal.h
+++ b/amdgpu/amdgpu_internal.h
@@ -119,9 +119,7 @@ struct amdgpu_context {
  * Functions.
  */
 
-void amdgpu_device_free_internal(amdgpu_device_handle dev);
-
-void amdgpu_bo_free_internal(amdgpu_bo_handle bo);
+drm_private void amdgpu_bo_free_internal(amdgpu_bo_handle bo);
 
 drm_private struct amdgpu_bo_va_mgr*
 amdgpu_vamgr_get_global(struct amdgpu_device *dev);
@@ -137,9 +135,9 @@ amdgpu_vamgr_find_va(struct amdgpu_bo_va_mgr *mgr, uint64_t size,
 drm_private void
 amdgpu_vamgr_free_va(struct amdgpu_bo_va_mgr *mgr, uint64_t va, uint64_t size);
 
-int amdgpu_query_gpu_info_init(amdgpu_device_handle dev);
+drm_private int amdgpu_query_gpu_info_init(amdgpu_device_handle dev);
 
-uint64_t amdgpu_cs_calculate_timeout(uint64_t timeout);
+drm_private uint64_t amdgpu_cs_calculate_timeout(uint64_t timeout);
 
 /**
  * Inline functions.
@@ -189,20 +187,4 @@ static inline void amdgpu_bo_reference(struct amdgpu_bo **dst,
 	*dst = src;
 }
 
-/**
- * Assignment between two amdgpu_device pointers with reference counting.
- *
- * Usage:
- *    struct amdgpu_device *dst = ... , *src = ...;
- *
- *    dst = src;
- *    // No reference counting. Only use this when you need to move
- *    // a reference from one pointer to another.
- *
- *    amdgpu_device_reference(&dst, src);
- *    // Reference counters are updated. dst is decremented and src is
- *    // incremented. dst is freed if its reference counter is 0.
- */
-void amdgpu_device_reference(struct amdgpu_device **dst,
-			     struct amdgpu_device *src);
 #endif
-- 
2.5.0



More information about the dri-devel mailing list