mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
cgroup: selftests: Move memcontrol specific helpers out of common cgroup_util.c
Move a handful of helpers out of cgroup_util.c and into test_memcontrol.c that have nothing to with cgroups in general, in anticipation of making cgroup_util.c a generic library that can be used by other selftests. Make read_text() and write_text() non-static so test_memcontrol.c can use them. Signed-off-by: James Houghton <jthoughton@google.com> Acked-by: Michal Koutný <mkoutny@suse.com> Link: https://lore.kernel.org/r/20250508184649.2576210-4-jthoughton@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
@@ -24,6 +24,84 @@
|
||||
static bool has_localevents;
|
||||
static bool has_recursiveprot;
|
||||
|
||||
int get_temp_fd(void)
|
||||
{
|
||||
return open(".", O_TMPFILE | O_RDWR | O_EXCL);
|
||||
}
|
||||
|
||||
int alloc_pagecache(int fd, size_t size)
|
||||
{
|
||||
char buf[PAGE_SIZE];
|
||||
struct stat st;
|
||||
int i;
|
||||
|
||||
if (fstat(fd, &st))
|
||||
goto cleanup;
|
||||
|
||||
size += st.st_size;
|
||||
|
||||
if (ftruncate(fd, size))
|
||||
goto cleanup;
|
||||
|
||||
for (i = 0; i < size; i += sizeof(buf))
|
||||
read(fd, buf, sizeof(buf));
|
||||
|
||||
return 0;
|
||||
|
||||
cleanup:
|
||||
return -1;
|
||||
}
|
||||
|
||||
int alloc_anon(const char *cgroup, void *arg)
|
||||
{
|
||||
size_t size = (unsigned long)arg;
|
||||
char *buf, *ptr;
|
||||
|
||||
buf = malloc(size);
|
||||
for (ptr = buf; ptr < buf + size; ptr += PAGE_SIZE)
|
||||
*ptr = 0;
|
||||
|
||||
free(buf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int is_swap_enabled(void)
|
||||
{
|
||||
char buf[PAGE_SIZE];
|
||||
const char delim[] = "\n";
|
||||
int cnt = 0;
|
||||
char *line;
|
||||
|
||||
if (read_text("/proc/swaps", buf, sizeof(buf)) <= 0)
|
||||
return -1;
|
||||
|
||||
for (line = strtok(buf, delim); line; line = strtok(NULL, delim))
|
||||
cnt++;
|
||||
|
||||
return cnt > 1;
|
||||
}
|
||||
|
||||
int set_oom_adj_score(int pid, int score)
|
||||
{
|
||||
char path[PATH_MAX];
|
||||
int fd, len;
|
||||
|
||||
sprintf(path, "/proc/%d/oom_score_adj", pid);
|
||||
|
||||
fd = open(path, O_WRONLY | O_APPEND);
|
||||
if (fd < 0)
|
||||
return fd;
|
||||
|
||||
len = dprintf(fd, "%d", score);
|
||||
if (len < 0) {
|
||||
close(fd);
|
||||
return len;
|
||||
}
|
||||
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* This test creates two nested cgroups with and without enabling
|
||||
* the memory controller.
|
||||
|
||||
Reference in New Issue
Block a user