718 Commits

Author SHA1 Message Date
Alex Smith
dbf9974fed Merge pull request #129 from gicmo/client_count_property
Introduce a ClientCount dbus Property
2019-04-12 08:33:47 +01:00
Robert Munteanu
0aced6f14e Add reference to openSUSE packages
OpenSUSE packages are available at https://software.opensuse.org/package/gamemode, so let's reflect this in the README.
2019-04-11 01:08:46 +02:00
Christian Kellner
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
Christian Kellner
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
Alex Smith
e86580c18c Update instructions to use 1.3.1 as the current stable release 2019-04-09 08:34:44 +01:00
Alex Smith
dbc5c453d5 Merge pull request #128 from mgerstner/gpuclockctl_fixes
Gpuclockctl fixes
2019-04-08 09:31:22 +01:00
Alex Smith
a91156ef93 Merge pull request #125 from tgurr/prefix
Use path_bindir for installing gamemoderun
2019-04-05 14:05:22 +01:00
Matthias Gerstner
78c2ced7d7 external-helper: improve run_external_process() robustness
run_external_process() contained pipe file descriptors leaks (e.g. one
pipe end was never closed). Also the stdout might have been captured
incomplete, since only a single read() was performed on the pipe.
Furthermore should a child process try to write a larger amount of data
onto the pipe then it will become stuck, because the parent process
isn't consuming the data. Thus the timeout would trigger in these cases
although the child process does nothing wrong.

This commit changes the implementation to follow a select() based
approach that continually reads from the pipe, but discards data that
doesn't fit in the provided buffer.
2019-04-04 13:19:22 +02:00
Matthias Gerstner
b411cfff6b gpuclockctl: refactor buffer size specification and avoid redundancies 2019-04-04 11:44:34 +02:00
Matthias Gerstner
d7394cbeb2 daemon: fix file descriptor leaks 2019-04-03 16:27:12 +02:00
Matthias Gerstner
618997f0b3 gpuclockctl: fix return value of get_gpu_state_amd() 2019-04-03 16:18:36 +02:00
Timo Gurr
85d75c303c Use path_bindir for installing gamemoderun
Honor prefix for installing gamemoderun to properly work in cross
environment so it can be installed in e.g. /usr/x86_64-pc-linux-gnu/bin
instead of /usr/bin like it's already done for gamemoded.
2019-03-29 18:18:23 +01:00
Alex Smith
959c48978b Update version to 1.4-dev post-release 2019-03-29 15:39:08 +00:00
Alex Smith
e5ccb4b68d Update version to 1.3.1 1.3.1 2019-03-29 15:30:11 +00:00
Alex Smith
1a51a2ec00 Update changelog for 1.3.1 2019-03-29 15:30:00 +00:00
Alex Smith
9465c5f6bd Generate sha256sums in mkrelease.sh 2019-03-29 15:25:25 +00:00
Alex Smith
efb8fbc3af Merge pull request #123 from gicmo/strtrunc_falsepositive
Rewrite strncpy to silence compiler warning
2019-03-29 15:21:34 +00:00
Christian Kellner
41b85c245d Rewrite strncpy to silence compiler warning
Instead of initializing the char array to 0 and writing N-1 bytes,
write N-1 bytes and set the last byte manually to 0. This seems
to make gcc happy.
2019-03-28 17:14:00 +01:00
Christian Kellner
34d86d30b1 Use additional compiler warnings, if supported
Check a list of well-known compiler warnings and use the one that
are supported by the current compiler.
2019-03-28 11:40:40 +00:00
Christian Kellner
4a577b8c7c Rename local variable to un-shadow the global bus
The local variable 'bus' was shadowing the global 'bus' variable;
to not confuse the two, rename the local one. Also unref the local
bus, i.e. fix a small memory leak.
2019-03-28 11:40:40 +00:00
Christian Kellner
c34186be07 Mark game_mode_context_loop as 'noreturn'
The function contains the main-loop of the daemon and will indeed
never return.
2019-03-28 11:40:40 +00:00
Christian Kellner
d12ab6830f No old-style function definitions.
Specify void as argument type for functions that don't take args.
2019-03-28 11:40:40 +00:00
Christian Kellner
45ba5bc4c4 Use matching signedness in format strings
Either cast the variable or change the format string to match the
signedness.
2019-03-28 11:40:40 +00:00
Christian Kellner
0eb59fc848 Use minimal number of characters for strncmp
MAX_GOVERNOR_LENGTH is defined as PATH_MAX + 1, so when comparing
two variable, each of once size, use the smaller one, i.e. PATH_MAX.
Assert statically that MAX_GOVERNOR_LENGTH is larger then PATH_MAX
so copying a string to a MAX_GOVERNOR_LENGTH sized variable from a
PATH_MAX size variable will not truncate the string.
2019-03-28 11:40:40 +00:00
Christian Kellner
bbde1d0357 Ensure strncpy'ed strings are all null terminated
If there is no null byte among the first n bytes of the source the
resulting string will not be properly null terminated.
Ensure that all strings that are copied via strncpy are properly
terminated copy "sizeof (dest) - 1" bytes and manually terminate
the string in the cases the array was not initialized.

Example compiler warning:
  ../daemon/gamemode-tests.c: In function ‘run_cpu_governor_tests’:
  ../daemon/gamemode-tests.c:326:4: warning: ‘strncpy’ specified bound
      256 equals destination size [-Wstringop-truncation]
    strncpy(defaultgov, currentgov, CONFIG_VALUE_MAX);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2019-03-28 11:40:40 +00:00
Alex Smith
db4dd87e22 Add Debian to the list of distros which have packages available 2019-03-25 16:49:25 +00:00
Alex Smith
c0032efc4f Make gamemoderun.in executable (#115)
The install_mode option was only added in Meson 0.47. In versions prior
to that, it will base the mode on the permissions of the source file,
so set this executable to be compatible with older versions.

See #115.
2019-03-25 16:40:54 +00:00
Alex Smith
5516b547ca Merge pull request #121 from lilianmoraru/master
Build with optimizations
2019-03-25 16:16:25 +00:00
Lilian A. Moraru
c0ffecae43 Build with optimizations 2019-03-19 10:38:49 +02:00
Alex Smith
95c365076f Update to version 1.4-dev post-release 2019-03-15 16:11:57 +00:00
Alex Smith
ea7d1c13a3 Update to version 1.3 1.3 2019-03-15 13:39:00 +00:00
Alex Smith
10a31f8dec Update copyright years to 2019 2019-03-14 16:59:30 +00:00
Alex Smith
6b7f6c12c2 Various README fixes/adjustments 2019-03-14 16:51:29 +00:00
Alex Smith
0f680f2a83 clang-format fix 2019-03-14 16:30:52 +00:00
Alex Smith
5ee2f3c06a Adjust reaper_freq to match the default value set in code 2019-03-14 15:58:28 +00:00
Alex Smith
23bf1e6624 Minor adjustments 2019-03-14 15:47:02 +00:00
Alex Smith
f163d4847b Update changelog, convert to Markdown 2019-03-14 15:43:20 +00:00
Alex Smith
4306660918 Adjust renice documentation 2019-03-14 15:11:10 +00:00
Alex Smith
2ab46df4c3 Disable softrealtime (SCHED_ISO) and renice by default
SCHED_ISO is not supported by upstream kernels, so don't try to use this by
default since for most users it will result in an error log that trying to
set the scheduling policy fails.

Without extra system configuration, we will also not have permission to renice
processes by default, so out of the box doing this will fail as well.

Users that wish to use these features can enable them from the config once
they have configured their system appropriately.
2019-03-14 15:00:49 +00:00
Alex Smith
746b463783 Merge pull request #114 from mdiluz/fix-issue-113
Try and make an educated guess at the correct nvidia gpu index
2019-03-12 17:08:37 +00:00
Marc Di Luzio
1482a2b39e Get the gpu index for both get and set (thanks @rezzafr33!) 2019-03-12 08:52:58 +00:00
Marc Di Luzio
c1d06f2ad5 Try and make an educated guess at the correct nvidia gpu index
This should hopefully fix issue #113, where the user was in the common situation of having an intel and an nvidia GPU, at card0 and card1 respectively, but the nvidia gpu was [gpu:0] according to the driver
2019-03-11 21:58:51 +00:00
Alex Smith
0c08359005 Merge pull request #112 from mdiluz/automatic-gpu-info
Clean up NV optimization config
2019-03-11 17:14:41 +00:00
Marc Di Luzio
dc1258d750 Automatically adjust the nvidia gpu index
The drm device ID doesn't match up with the pci device as expected, spotted by issue #113

	I can't test this myself just yet, will need data from the user in question to verify PCIDevice is the right value
2019-03-11 16:27:49 +00:00
Marc Di Luzio
fec32ac53d Remove the nv_perf_level config option and figure it out programmatically
This also fixes the instances in testing where we don't have the nv overclock in use, but we do have the mode set

	Solves issues explaining the what the perf_level actually meant, and future proofs for any PR that wants to set individual perf levels
2019-03-10 15:19:34 +00:00
Marc Di Luzio
873d0a224b Remove passing the vendor to gpuclockctl 2019-03-10 15:19:34 +00:00
Marc Di Luzio
5e5cae31d3 Explain a little more about nv_perf_level
We think this was a little confusing, so explain some more.
2019-03-10 12:38:31 +00:00
Marc Di Luzio
eb9bb0cdf7 Add notes on values for nv_powermizer_mode
Instead of just suggesting values
2019-03-10 11:54:54 +00:00
Alex Smith
c49cd45e01 Ensure that we null terminate the process output buffer in run_external_process 2019-03-10 10:51:15 +00:00
Alex Smith
26ec6ad2b4 Document script_timeout 2019-03-10 10:49:06 +00:00