src/platform/psp2/perf.c (view raw)
1/* Copyright (c) 2013-2020 Jeffrey Pfau
2 *
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6#include <mgba-util/socket.h>
7
8#include <psp2/appmgr.h>
9#include <psp2/kernel/processmgr.h>
10#include <psp2/kernel/threadmgr.h>
11
12#define MAX_ARGS 19
13
14
15void connectServer(char* args[]) {
16 Socket server = SocketOpenTCP(7215, NULL);
17 if (SOCKET_FAILED(server)) {
18 return;
19 }
20 if (SOCKET_FAILED(SocketListen(server, 0))) {
21 SocketClose(server);
22 return;
23 }
24 Socket conn = SocketAccept(server, NULL);
25 if (SOCKET_FAILED(conn)) {
26 SocketClose(server);
27 return;
28 }
29
30 int i = 0;
31 ssize_t len;
32 char arg[1024];
33 while (i < MAX_ARGS && (len = SocketRecv(conn, arg, sizeof(arg) - 1)) > 0) {
34 arg[len] = '\0';
35 char* tok;
36 for (tok = strtok(arg, "\n"); tok && i < MAX_ARGS; ++i) {
37 args[i] = strdup(tok);
38 tok = strtok(NULL, "\n");
39 }
40 if (arg[len - 1] == '\n') {
41 return;
42 }
43 }
44
45 SocketClose(conn);
46 SocketClose(server);
47}
48
49int main() {
50 char* args[MAX_ARGS + 1] = { 0 };
51 SocketSubsystemInit();
52 connectServer(args);
53 SocketSubsystemDeinit();
54 sceAppMgrLoadExec("app0:/perf.bin", args, NULL);
55 sceKernelExitProcess(0);
56 return 0;
57}