MCPcopy Create free account
hub / github.com/Bananymous/banan-os / open_framebuffer

Function open_framebuffer

userspace/programs/WindowServer/Framebuffer.cpp:10–45  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8#include <sys/mman.h>
9
10Framebuffer open_framebuffer()
11{
12 int framebuffer_fd = open("/dev/fb0", O_RDWR | O_CLOEXEC);
13 if (framebuffer_fd == -1)
14 {
15 perror("open");
16 exit(1);
17 }
18
19 framebuffer_info_t framebuffer_info;
20 if (pread(framebuffer_fd, &framebuffer_info, sizeof(framebuffer_info), -1) == -1)
21 {
22 perror("pread");
23 exit(1);
24 }
25
26 const size_t framebuffer_bytes = framebuffer_info.width * framebuffer_info.height * (BANAN_FB_BPP / 8);
27
28 uint32_t* framebuffer_mmap = (uint32_t*)mmap(NULL, framebuffer_bytes, PROT_READ | PROT_WRITE, MAP_SHARED, framebuffer_fd, 0);
29 if (framebuffer_mmap == MAP_FAILED)
30 {
31 perror("mmap");
32 exit(1);
33 }
34
35 memset(framebuffer_mmap, 0, framebuffer_bytes);
36 msync(framebuffer_mmap, framebuffer_bytes, MS_SYNC);
37
38 Framebuffer framebuffer;
39 framebuffer.fd = framebuffer_fd;
40 framebuffer.mmap = framebuffer_mmap;
41 framebuffer.width = framebuffer_info.width;
42 framebuffer.height = framebuffer_info.height;
43 framebuffer.bpp = BANAN_FB_BPP;
44 return framebuffer;
45}

Callers 1

mainFunction · 0.85

Calls 7

openFunction · 0.85
perrorFunction · 0.85
exitFunction · 0.85
preadFunction · 0.85
mmapFunction · 0.85
memsetFunction · 0.85
msyncFunction · 0.85

Tested by

no test coverage detected