+ } else if (streq(name, "StartupCPUShares")) {
+ uint64_t u64;
+ unsigned long ul;
+
+ r = sd_bus_message_read(message, "t", &u64);
+ if (r < 0)
+ return r;
+
+ if (u64 == (uint64_t) -1)
+ ul = (unsigned long) -1;
+ else {
+ ul = (unsigned long) u64;
+ if (ul <= 0 || (uint64_t) ul != u64)
+ return sd_bus_error_set_errnof(error, EINVAL, "StartupCPUShares value out of range");
+ }
+
+ if (mode != UNIT_CHECK) {
+ c->startup_cpu_shares = ul;
+ u->cgroup_realized_mask &= ~CGROUP_CPU;
+ unit_write_drop_in_private_format(u, mode, name, "StartupCPUShares=%lu", ul);
+ }
+
+ return 1;
+
+ } else if (streq(name, "CPUQuotaPerSecUSec")) {
+ uint64_t u64;
+
+ r = sd_bus_message_read(message, "t", &u64);
+ if (r < 0)
+ return r;
+
+ if (u64 <= 0)
+ return sd_bus_error_set_errnof(error, EINVAL, "CPUQuotaPerSecUSec value out of range");
+
+ if (mode != UNIT_CHECK) {
+ c->cpu_quota_per_sec_usec = u64;
+ u->cgroup_realized_mask &= ~CGROUP_CPU;
+ unit_write_drop_in_private_format(u, mode, "CPUQuota", "CPUQuota=%0.f%%", (double) (c->cpu_quota_per_sec_usec / 10000));
+ }
+
+ return 1;
+