[lxc-devel] [lxcfs/master] proc_fuse: port to uint64_t
brauner on Github
lxc-bot at linuxcontainers.org
Sat Mar 14 11:55:57 UTC 2020
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 426 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200314/d31fb44a/attachment.bin>
-------------- next part --------------
From e97129333b2d4e68ba94fb6a14ff3f3552462003 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Sat, 14 Mar 2020 12:54:55 +0100
Subject: [PATCH] proc_fuse: port to uint64_t
Using unsigned long and uint64_t is problematic on 32bit.
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/proc_fuse.c | 39 +++++++++++++++++++--------------------
1 file changed, 19 insertions(+), 20 deletions(-)
diff --git a/src/proc_fuse.c b/src/proc_fuse.c
index 9652163..f120eb1 100644
--- a/src/proc_fuse.c
+++ b/src/proc_fuse.c
@@ -200,10 +200,10 @@ __lxcfs_fuse_ops int proc_release(const char *path, struct fuse_file_info *fi)
return 0;
}
-static unsigned long get_memlimit(const char *cgroup, bool swap)
+static uint64_t get_memlimit(const char *cgroup, bool swap)
{
__do_free char *memlimit_str = NULL;
- unsigned long memlimit = -1;
+ uint64_t memlimit = -1;
char *ptr;
int ret;
@@ -212,7 +212,7 @@ static unsigned long get_memlimit(const char *cgroup, bool swap)
else
ret = cgroup_ops->get_memory_max(cgroup_ops, cgroup, &memlimit_str);
if (ret > 0) {
- memlimit = strtoul(memlimit_str, &ptr, 10);
+ memlimit = strtoull(memlimit_str, &ptr, 10);
if (ptr == memlimit_str)
memlimit = -1;
}
@@ -220,11 +220,11 @@ static unsigned long get_memlimit(const char *cgroup, bool swap)
return memlimit;
}
-static unsigned long get_min_memlimit(const char *cgroup, bool swap)
+static uint64_t get_min_memlimit(const char *cgroup, bool swap)
{
__do_free char *copy = NULL;
- unsigned long memlimit = 0;
- unsigned long retlimit;
+ uint64_t memlimit = 0;
+ uint64_t retlimit;
copy = strdup(cgroup);
if (!copy)
@@ -258,8 +258,8 @@ static int proc_swaps_read(char *buf, size_t size, off_t offset,
*memswusage_str = NULL;
struct fuse_context *fc = fuse_get_context();
struct file_info *d = INTTYPE_TO_PTR(fi->fh);
- unsigned long memswlimit = 0, memlimit = 0, memusage = 0,
- memswusage = 0, swap_total = 0, swap_free = 0;
+ uint64_t memswlimit = 0, memlimit = 0, memusage = 0, memswusage = 0,
+ swap_total = 0, swap_free = 0;
ssize_t total_len = 0;
ssize_t l = 0;
char *cache = d->buf;
@@ -296,14 +296,14 @@ static int proc_swaps_read(char *buf, size_t size, off_t offset,
if (ret < 0)
return 0;
- memusage = strtoul(memusage_str, NULL, 10);
+ memusage = strtoull(memusage_str, NULL, 10);
ret = cgroup_ops->get_memory_swap_max(cgroup_ops, cg, &memswlimit_str);
if (ret >= 0)
ret = cgroup_ops->get_memory_swap_current(cgroup_ops, cg, &memswusage_str);
if (ret >= 0) {
memswlimit = get_min_memlimit(cg, true);
- memswusage = strtoul(memswusage_str, NULL, 10);
+ memswusage = strtoull(memswusage_str, NULL, 10);
swap_total = (memswlimit - memlimit) / 1024;
swap_free = (memswusage - memusage) / 1024;
}
@@ -323,16 +323,16 @@ static int proc_swaps_read(char *buf, size_t size, off_t offset,
while (getline(&line, &linelen, f) != -1) {
if (startswith(line, "SwapTotal:"))
- sscanf(line, "SwapTotal: %8lu kB", &swap_total);
+ sscanf(line, "SwapTotal: %8" PRIu64 " kB", &swap_total);
else if (startswith(line, "SwapFree:"))
- sscanf(line, "SwapFree: %8lu kB", &swap_free);
+ sscanf(line, "SwapFree: %8" PRIu64 " kB", &swap_free);
}
}
if (swap_total > 0) {
l = snprintf(d->buf + total_len, d->size - total_len,
- "none%*svirtual\t\t%lu\t%lu\t0\n", 36, " ",
- swap_total, swap_free);
+ "none%*svirtual\t\t%" PRIu64 "\t%" PRIu64 "\t0\n",
+ 36, " ", swap_total, swap_free);
total_len += l;
}
@@ -534,7 +534,7 @@ static inline void iwashere(void)
static double get_reaper_busy(pid_t task)
{
__do_free char *cgroup = NULL, *usage_str = NULL;
- unsigned long usage = 0;
+ uint64_t usage = 0;
pid_t initpid;
initpid = lookup_initpid_in_store(task);
@@ -545,11 +545,10 @@ static double get_reaper_busy(pid_t task)
if (!cgroup)
return 0;
prune_init_slice(cgroup);
- if (!cgroup_ops->get(cgroup_ops, "cpuacct", cgroup, "cpuacct.usage",
- &usage_str))
+ if (!cgroup_ops->get(cgroup_ops, "cpuacct", cgroup, "cpuacct.usage", &usage_str))
return 0;
- usage = strtoul(usage_str, NULL, 10);
+ usage = strtoull(usage_str, NULL, 10);
return ((double)usage / 1000000000);
}
@@ -1091,12 +1090,12 @@ static int proc_meminfo_read(char *buf, size_t size, off_t offset,
ret = cgroup_ops->get_memory_swap_current(cgroup_ops, cgroup, &memswusage_str);
if (ret >= 0) {
memswlimit = get_min_memlimit(cgroup, true);
- memswusage = strtoul(memswusage_str, NULL, 10);
+ memswusage = strtoull(memswusage_str, NULL, 10);
memswlimit = memswlimit / 1024;
memswusage = memswusage / 1024;
}
- memusage = strtoul(memusage_str, NULL, 10);
+ memusage = strtoull(memusage_str, NULL, 10);
memlimit /= 1024;
memusage /= 1024;
More information about the lxc-devel
mailing list