util/os_file: extend os_read_file to return the file size
authorPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Mon, 16 Mar 2020 09:48:48 +0000 (10:48 +0100)
committerPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Tue, 24 Mar 2020 07:30:34 +0000 (08:30 +0100)
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4181>

src/intel/vulkan/anv_device.c
src/util/os_file.c
src/util/os_file.h

index cffcecca75c679ff398e32a81b1b7944705604fe..11fb4f6c3fc43743a2820228c5e50fefe323db30 100644 (file)
@@ -308,7 +308,7 @@ anv_physical_device_free_disk_cache(struct anv_physical_device *device)
 static uint64_t
 get_available_system_memory()
 {
-   char *meminfo = os_read_file("/proc/meminfo");
+   char *meminfo = os_read_file("/proc/meminfo", NULL);
    if (!meminfo)
       return 0;
 
index 228f1e823c5e388db01d0deb335e25d3c44d1af2..5771b27e5d0730d33a0a3a95235c2432320eb9a8 100644 (file)
@@ -67,7 +67,7 @@ readN(int fd, char *buf, size_t len)
 }
 
 char *
-os_read_file(const char *filename)
+os_read_file(const char *filename, size_t *size)
 {
    /* Note that this also serves as a slight margin to avoid a 2x grow when
     * the file is just a few bytes larger when we read it than when we
@@ -130,6 +130,9 @@ os_read_file(const char *filename)
 
    buf[offset] = '\0';
 
+   if (size)
+      *size = offset;
+
    return buf;
 }
 
@@ -150,7 +153,7 @@ os_same_file_description(int fd1, int fd2)
 #include "u_debug.h"
 
 char *
-os_read_file(const char *filename)
+os_read_file(const char *filename, size_t *size)
 {
    errno = -ENOSYS;
    return NULL;
index 58639476f60a42645430abc66da7d7f2dae82983..36f367ea3588b15f603c50779ea39b7641bc6d9c 100644 (file)
@@ -27,9 +27,11 @@ os_file_create_unique(const char *filename, int filemode);
 /*
  * Read a file.
  * Returns a char* that the caller must free(), or NULL and sets errno.
+ * If size is not null and no error occured it's set to the size of the
+ * file.
  */
 char *
-os_read_file(const char *filename);
+os_read_file(const char *filename, size_t *size);
 
 /*
  * Try to determine if two file descriptors reference the same file description