Skip to content

Commit 51aa55c

Browse files
committed
added simple kern(el) example elf - try libless (e.g. stress) too
1 parent 05fed11 commit 51aa55c

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed

kern/print/Makefile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
ifndef Ps4Sdk
2+
ifdef ps4sdk
3+
Ps4Sdk := $(ps4sdk)
4+
endif
5+
ifdef PS4SDK
6+
Ps4Sdk := $(PS4SDK)
7+
endif
8+
ifndef Ps4Sdk
9+
$(error Neither PS4SDK, Ps4Sdk nor ps4sdk set)
10+
endif
11+
endif
12+
13+
target ?= ps4_elf
14+
Cf := -Wno-zero-length-array #sysproto.h
15+
16+
include $(Ps4Sdk)/make/ps4sdk.mk

kern/print/source/main.c

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#define _XOPEN_SOURCE 700
2+
#define __BSD_VISIBLE 1
3+
#define _KERNEL
4+
#define _WANT_UCRED
5+
#include <sys/cdefs.h>
6+
#include <sys/types.h>
7+
#include <sys/param.h>
8+
#include <sys/kernel.h>
9+
#include <sys/systm.h>
10+
#include <sys/malloc.h>
11+
#include <sys/sysproto.h>
12+
13+
#include <machine/specialreg.h>
14+
15+
#undef offsetof
16+
#include <ps4/kernel.h>
17+
#include <ps4/kern.h>
18+
19+
#include <sys/param.h>
20+
#include <sys/systm.h>
21+
#include <sys/sysproto.h>
22+
#include <sys/filedesc.h>
23+
#include <sys/filio.h>
24+
#include <sys/fcntl.h>
25+
#include <sys/lock.h>
26+
#include <sys/proc.h>
27+
#include <sys/signalvar.h>
28+
#include <sys/uio.h>
29+
#include <sys/kernel.h>
30+
#include <sys/ktr.h>
31+
#include <sys/limits.h>
32+
#include <sys/malloc.h>
33+
#include <sys/poll.h>
34+
#include <sys/resourcevar.h>
35+
#include <sys/selinfo.h>
36+
#include <sys/sysctl.h>
37+
#include <sys/sysent.h>
38+
#include <sys/condvar.h>
39+
#ifdef KTRACE
40+
#include <sys/ktrace.h>
41+
#endif
42+
43+
extern int kern_writev(struct thread *td, int fd, struct uio *auio);
44+
45+
int kern_sys_write(struct thread *td, struct write_args *uap)
46+
{
47+
struct uio auio;
48+
struct iovec aiov;
49+
int error;
50+
51+
if (uap->nbyte > INT_MAX)
52+
return (EINVAL);
53+
54+
aiov.iov_base = (void *)(uintptr_t)uap->buf;
55+
aiov.iov_len = uap->nbyte;
56+
auio.uio_iov = &aiov;
57+
auio.uio_iovcnt = 1;
58+
auio.uio_resid = uap->nbyte;
59+
auio.uio_segflg = UIO_SYSSPACE;
60+
error = kern_writev(td, uap->fd, &auio);
61+
62+
return(error);
63+
}
64+
65+
int main(int argc, char **argv)
66+
{
67+
void *memory = ps4KernMemoryMalloc(1234);
68+
struct write_args wargs; //Die monster! You don't belong in this world!
69+
70+
sprintf(memory, "sys_write: %p, memory: %p\n", (void *)sys_write, (void *)memory);
71+
wargs.fd = 1;
72+
wargs.buf = memory;
73+
wargs.nbyte = strnlen(memory, 1234);
74+
int r = kern_sys_write(ps4KernThreadCurrent(), &wargs);
75+
ps4KernMemoryFree(memory);
76+
77+
return EXIT_SUCCESS;
78+
}

0 commit comments

Comments
 (0)