2bca1fb04e
Remove commented includes
2019-06-01 10:54:22 +01:00
81e38d02e6
Move daemonise code to main file, simplifying files
2019-06-01 10:54:22 +01:00
9d484061ad
Remove extra comments in config that didn't explain anything
2019-06-01 10:54:22 +01:00
717d6cc003
Correct the inotify failure message
2019-06-01 10:54:22 +01:00
1df1852c76
Move most Wine could out to Wine file
2019-06-01 10:54:22 +01:00
75dc083616
Remove artificial max client limit
...
This is just additional code that isn't required, and could mask or cause problems.
2019-06-01 10:54:22 +01:00
71d4fab15e
Fix inotify for https://github.com/FeralInteractive/gamemode/issues/149
...
1. Don't look for ATTRIB changes - these spawn extra unneeded events when other watches will catch actual edits
2. Move name check code out of IN_ISDIR, I mistook IN_ISDIR to mean the event was from a dir watch, but this was incorrect
2019-05-28 16:37:34 +01:00
3a2ebd1cdf
Merge pull request #144 from mdiluz/add-config-hotreloading
...
Add config hot-reloading
2019-05-24 08:58:43 +01:00
a0b850474d
Fix comments
2019-05-24 08:48:38 +01:00
a9e3f866a0
Extend the context rwlock around where we apply optimisations
...
This prevents a potential race condition for when the reaper thread reloads the config
2019-05-24 08:45:14 +01:00
83c4d38858
Use PATH_MAX-1 as strncopy doesn't always set the final null byte
2019-05-21 09:06:27 +01:00
44ab695246
Fix memory leak ambiguity with executable names
2019-05-19 12:47:32 +01:00
9db7442a31
Fix potential memory leak in game_mode_initialise_gpu
2019-05-19 12:47:32 +01:00
89904602e9
Fix formatting for travis
2019-05-19 11:24:51 +01:00
5d0a413035
Only perform the leave/enter loop when gamemode is already active/has clients
2019-05-19 11:15:47 +01:00
ec55bda3b2
Implement inotify check on the reaper thread for config changes
2019-05-19 11:15:47 +01:00
ceb1808c95
Initial implementation of a RefreshConfig dbus interface
2019-05-19 11:15:47 +01:00
16e7d06083
Fix up error logging in game_mode_resolve_wine_preloader()
...
proc_path was never set to non-null but used for error logging, this
triggered -Wformat-overflow warnings on GCC 9. Use the pid instead
and remove that variable.
2019-05-19 11:12:17 +01:00
09e475e092
Typo fixes
2019-05-19 11:05:41 +01:00
a27e741beb
Reformat long_options now that travis matches
2019-05-15 18:43:42 +01:00
f401b49b1a
Close the openned task dirs to prevent a leak
2019-05-15 18:20:36 +01:00
41d35fa12a
Add a zeroed final option for getopt_long for correctness
2019-05-15 18:17:50 +01:00
0d018d91a8
Implement some error logging/checking and clean up some TODO comments
2019-05-13 19:44:22 +01:00
ef29b35258
Make sure we don't leave a hanging gamemode request from the child process
...
Otherwise other tests might have to wait for the reaper thread to clean it up
2019-05-13 19:44:22 +01:00
139b90e0b7
Refactor the process test function
...
Make it simply take a functor to the per tid get method
2019-05-13 19:44:22 +01:00
4091a0c532
Now that renice works - set it to a hard fail again
...
Also move some comments around
2019-05-13 19:44:22 +01:00
f00a89bc56
Actually apply setpriority to the thread not the client
2019-05-13 19:44:22 +01:00
2d19b61a38
Always log when getpriority fails - we will likely want to know
2019-05-13 19:44:22 +01:00
16c932f5d0
Adjust logs for generic process test function
2019-05-13 19:44:22 +01:00
f152ea9338
Initial implementation of applying renice to all process threads
2019-05-13 19:44:22 +01:00
3ac49385dc
Add a test for renicing multithreaded processes
2019-05-13 19:44:22 +01:00
87cfd9c5a6
Remove error log about known issue now that it is fixed
2019-05-13 19:44:22 +01:00
38e48a2d8e
Update logging to reflect thread, client relationship
2019-05-13 19:44:22 +01:00
bf2b057915
First pass at fix for ioprio not applying to process tree properly
...
See https://github.com/FeralInteractive/gamemode/issues/140
2019-05-13 19:44:22 +01:00
6639b17500
Make the multithreaded ioprio tests not cause a full failure
2019-05-13 19:44:22 +01:00
6869470f9b
Fix feature status codes - failures here should be considered a failure
2019-05-13 19:44:22 +01:00
934b497603
Implement multithreaded test framework (and use for ioprio)
...
ioprio tests will now fail due to https://github.com/FeralInteractive/gamemode/issues/140
2019-05-13 19:44:22 +01:00
5ffe832faf
Don't store the initial values
...
1. We don't use them anyway (though that could be a feature request)
2. They weren't stored per-client, so would be incorrect anyway
2019-05-11 13:24:13 +01:00
7f196cdd1a
Fix formatting for travis
2019-05-11 13:06:43 +01:00
598969a538
Implement restoring the old ioprio value when unregistered
...
Another part of the fix for https://github.com/FeralInteractive/gamemode/issues/141
2019-05-11 12:08:29 +01:00
2249a71355
Get ready for re-setting ioprio value on un-register
...
Implements tests for feature
Fixes CLAMP macro
2019-05-11 12:08:29 +01:00
6d14149658
Reset renice value on unregister
...
Part of fixing up https://github.com/FeralInteractive/gamemode/issues/141
2019-05-11 12:08:29 +01:00
09d63ae4f5
Set up for resetting niceness value
...
Add tests to check this feature
Apply config validation in config for simplicity
Note: if anything messes with the niceness (ie. it starts non-zero, or it's not the expected value during setup, we'll bail out)
2019-05-11 12:08:29 +01:00
7e5216c4a0
Some comments and cleanup
2019-05-11 12:08:29 +01:00
717777e6c2
Implement PID support for --request and --status
2019-05-11 12:08:29 +01:00
baff9c0363
Allow for long options using getopt_long
2019-05-11 12:08:29 +01:00
70e601267b
daemon: use readlink not realpath to find the exe
...
The realpath(3) will fail if the target does not exist (internally
realpath will stat all the components of the link target path).
This is a problem in the case of sandbox applications where
the exe points to the absolute path *inside* the sandbox, e.g. to
/app/bin/<name> in the case of flatpak. For these cases realpath(3)
will then fail. Therefore use readlink(3) instead.
2019-05-02 11:29:58 +02:00
0c778200ae
helpers: add helpers to automatically close fds
...
Add a inline helper function and a helper macro to be able to
automatically close file descriptors. Does nothing if the argument
is NULL or the pointed to integer is < 0.
2019-05-02 11:29:03 +02:00
05909d1cfa
daemon: add a ClientCount dbus property
...
Introduce a new "ClientCount" dbus property that can be queried and
also watched to see if gamemode is currently active (or not).
2019-04-11 00:09:52 +02:00
6d921617f9
daemon: make context_num_clients a public method
...
So it can be used from outside daemon/gamemode.c, to e.g. implement
an ClientCount property.
2019-04-10 23:57:00 +02:00