Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
home:pgajdos:l
libcpuset
bug-514127_libcpuset-cpuset_set_iopt-adds.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bug-514127_libcpuset-cpuset_set_iopt-adds.patch of Package libcpuset
--- libcpuset.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) --- a/libcpuset.c +++ b/libcpuset.c @@ -67,9 +67,11 @@ struct cpuset { char mem_exclusive; char notify_on_release; char memory_migrate; + char mem_hardwall; char memory_pressure_enabled; char memory_spread_page; char memory_spread_slab; + char sched_load_balance; /* * Each field 'x' above gets an 'x_valid' field below. @@ -95,9 +97,11 @@ struct cpuset { unsigned mem_exclusive_valid:1; unsigned notify_on_release_valid:1; unsigned memory_migrate_valid:1; + unsigned mem_hardwall_valid:1; unsigned memory_pressure_enabled_valid:1; unsigned memory_spread_page_valid:1; unsigned memory_spread_slab_valid:1; + unsigned sched_load_balance_valid:1; }; /* Presumed cpuset file system mount point */ @@ -688,12 +692,18 @@ int cpuset_set_iopt(struct cpuset *cp, c } else if (streq(optionname, "memory_migrate")) { cp->memory_migrate = !!value; cp->memory_migrate_valid = 1; + } else if (streq(optionname, "mem_hardwall")) { + cp->mem_hardwall = !!value; + cp->mem_hardwall_valid = 1; } else if (streq(optionname, "memory_spread_page")) { cp->memory_spread_page = !!value; cp->memory_spread_page_valid = 1; } else if (streq(optionname, "memory_spread_slab")) { cp->memory_spread_slab = !!value; cp->memory_spread_slab_valid = 1; + } else if (streq(optionname, "sched_load_balance")) { + cp->sched_load_balance = !!value; + cp->sched_load_balance_valid = 1; } else return -2; /* optionname not recognized */ return 0; @@ -857,10 +867,14 @@ int cpuset_get_iopt(const struct cpuset return cp->memory_pressure_enabled; else if (streq(optionname, "memory_migrate")) return cp->memory_migrate; + else if (streq(optionname, "mem_hardwall")) + return cp->mem_hardwall; else if (streq(optionname, "memory_spread_page")) return cp->memory_spread_page; else if (streq(optionname, "memory_spread_slab")) return cp->memory_spread_slab; + else if (streq(optionname, "sched_load_balance")) + return cp->sched_load_balance; else return -1; /* optionname not recognized */ } @@ -1642,6 +1656,11 @@ static int apply_cpuset_settings(const c if (store_flag(path, "memory_migrate", cp->memory_migrate) < 0) goto err; } + if (cp->mem_hardwall_valid && + exists_flag(path, "mem_hardwall")) { + if (store_flag(path, "mem_hardwall", cp->mem_hardwall) < 0) + goto err; + } if (cp->memory_pressure_enabled_valid && exists_flag(path, "memory_pressure_enabled")) { if (store_flag(path, "memory_pressure_enabled", cp->memory_pressure_enabled) < 0) @@ -1657,6 +1676,12 @@ static int apply_cpuset_settings(const c if (store_flag(path, "memory_spread_slab", cp->memory_spread_slab) < 0) goto err; } + if (cp->sched_load_balance_valid && + exists_flag(path, "sched_load_balance")) { + if (store_flag(path, "sched_load_balance", cp->sched_load_balance) < 0) + goto err; + } + if (cp->cpus_valid && store_mask(path, "cpus", cp->cpus) < 0) goto err; if (cp->mems_valid && store_mask(path, "mems", cp->mems) < 0) @@ -1912,6 +1937,12 @@ int cpuset_query(struct cpuset *cp, cons cp->memory_migrate_valid = 1; } + if (exists_flag(buf, "mem_hardwall")) { + if (load_flag(buf, &cp->mem_hardwall, "mem_hardwall") < 0) + goto err; + cp->mem_hardwall_valid = 1; + } + if (exists_flag(buf, "memory_pressure_enabled")) { if (load_flag(buf, &cp->memory_pressure_enabled, "memory_pressure_enabled") < 0) goto err; @@ -1930,6 +1961,12 @@ int cpuset_query(struct cpuset *cp, cons cp->memory_spread_slab_valid = 1; } + if (exists_flag(buf, "sched_load_balance")) { + if (load_flag(buf, &cp->sched_load_balance, "sched_load_balance") < 0) + goto err; + cp->sched_load_balance_valid = 1; + } + if (load_mask(buf, &cp->cpus, cpuset_cpus_nbits(), "cpus") < 0) goto err; cp->cpus_valid = 1; @@ -3291,6 +3328,10 @@ int cpuset_export(const struct cpuset *c n += snprintf(buf + n, max(buflen - n, 0), "memory_migrate\n"); + if (cp->mem_hardwall) + n += snprintf(buf + n, max(buflen - n, 0), + "mem_hardwall\n"); + if (cp->memory_spread_page) n += snprintf(buf + n, max(buflen - n, 0), "memory_spread_page\n"); @@ -3299,6 +3340,10 @@ int cpuset_export(const struct cpuset *c n += snprintf(buf + n, max(buflen - n, 0), "memory_spread_slab\n"); + if (cp->sched_load_balance) + n += snprintf(buf + n, max(buflen - n, 0), + "sched_load_balance\n"); + if ((tmp = sprint_mask_buf(cp->cpus)) == NULL) return -1; n += snprintf(buf + n, max(buflen - n, 0), "cpus %s\n", tmp); @@ -3383,6 +3428,10 @@ int cpuset_import(struct cpuset *cp, con cp->memory_migrate = 1; goto eol; } + if (streq(tok, "mem_hardwall")) { + cp->mem_hardwall = 1; + goto eol; + } if (streq(tok, "memory_spread_page")) { cp->memory_spread_page = 1; goto eol; @@ -3391,6 +3440,10 @@ int cpuset_import(struct cpuset *cp, con cp->memory_spread_slab = 1; goto eol; } + if (streq(tok, "sched_load_balance")) { + cp->sched_load_balance = 1; + goto eol; + } if (streq(tok, "cpu") || streq(tok, "cpus")) { if (import_list(tok, arg, cp->cpus, emsg, elen) < 0) goto err; @@ -3434,9 +3487,11 @@ int cpuset_import(struct cpuset *cp, con cp->mem_exclusive_valid = 1; cp->notify_on_release_valid = 1; cp->memory_migrate_valid = 1; + cp->mem_hardwall_valid = 1; cp->memory_pressure_enabled_valid = 1; cp->memory_spread_page_valid = 1; cp->memory_spread_slab_valid = 1; + cp->sched_load_balance = 1; return 0; err:
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor