Explorar o código

Call gpuclockctl

Marc Di Luzio %!s(int64=6) %!d(string=hai) anos
pai
achega
57a55c41cc
Modificáronse 1 ficheiros con 18 adicións e 34 borrados
  1. 18 34
      daemon/gamemode-gpu.c

+ 18 - 34
daemon/gamemode-gpu.c

@@ -35,6 +35,8 @@ POSSIBILITY OF SUCH DAMAGE.
 #include "gamemode.h"
 #include "helpers.h"
 #include "logging.h"
+#include "config.h"
+#include "external-helper.h"
 
 #include "daemon_config.h"
 #include "gpu-query.h"
@@ -178,40 +180,22 @@ int game_mode_apply_gpu(const GameModeGPUInfo *info, bool apply)
 	if (!info)
 		return 0;
 
-	/*
-	    pid_t p;
-	    int status = 0;
-	    int ret = 0;
-	    int r = -1;
-
-	    const char *const exec_args[] = {
-	        "/usr/bin/pkexec", LIBEXECDIR "/gpuclockctl", "set", value, NULL,
-	    };
-
-	    LOG_MSG("Requesting new GPU settings %s\n", value);
-
-	    if ((p = fork()) < 0) {
-	        LOG_ERROR("Failed to fork(): %s\n", strerror(errno));
-	        return false;
-	    } else if (p == 0) {
-	        if ((r = execv(exec_args[0], (char *const *)exec_args)) != 0) {
-	            LOG_ERROR("Failed to execute cpugovctl helper: %s %s\n", exec_args[1],
-	   strerror(errno)); exit(EXIT_FAILURE);
-	        }
-	        _exit(EXIT_SUCCESS);
-	    } else {
-	        if (waitpid(p, &status, 0) < 0) {
-	            LOG_ERROR("Failed to waitpid(%d): %s\n", (int)p, strerror(errno));
-	            return false;
-	        }
-	        if (!WIFEXITED(status)) {
-	            LOG_ERROR("Child process '%s' exited abnormally\n", exec_args[0]);
-	        }
-	    }
-
-	    if ((ret = WEXITSTATUS(status)) != 0) {
-	        LOG_ERROR("Failed to update cpu governor policy\n");
-	*/
+	LOG_MSG("Requesting GPU optimisations on device:%ld with settings core:%ld clock:%ld\n",
+	        info->device,
+	        info->core,
+	        info->mem);
+
+	// TODO: Actually pass right arguments
+	const char *const exec_args[] = {
+		"/usr/bin/pkexec",
+		LIBEXECDIR "/gpuclockctl",
+		NULL,
+	};
+
+	if (run_external_process(exec_args) != 0) {
+		LOG_ERROR("ERROR: Failed to call gpuclockctl, could not apply optimisations!\n");
+		return -1;
+	}
 
 	return 0;
 }