Compare commits

..

No commits in common. "2c813f5901329d2fabaed52a774cbf94fcc5a561" and "1938a059a24acf13e72f46c41fce34a1b62b5bb5" have entirely different histories.

8 changed files with 41 additions and 97 deletions

View File

@ -1,4 +1,4 @@
APPS := init sym sh crash uname uptime
APPS := init sym sh
APPS_DIR := $(LUNA_ROOT)/apps
APPS_SRC := $(APPS_DIR)/src

View File

@ -1,5 +0,0 @@
int main()
{
int* ptr = (int*)0xdeadbeef;
*ptr = 6;
}

View File

@ -1,8 +1,43 @@
#include <luna.h>
#include <setjmp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <unistd.h>
int print_version()
{
char version[4096];
FILE* fp = fopen("/dev/version", "r");
if (!fp)
{
perror("fopen");
return 1;
}
size_t nread = fread(version, 4096, 1, fp);
if (ferror(fp))
{
perror("fread");
return 1;
}
version[nread] = 0;
if (fclose(fp) < 0)
{
perror("fclose");
return 1;
}
printf("Your kernel version is %s\n\n", version);
return 0;
}
int main()
{
if (getpid() != 1)
@ -11,7 +46,11 @@ int main()
return 1;
}
printf("Welcome to Luna!\n\n");
printf("Welcome to Luna!\n");
printf("Running as PID %ld\n", getpid());
if (print_version()) return 1;
msleep(200);

View File

@ -1,26 +0,0 @@
#include <stdio.h>
int main()
{
FILE* fp = fopen("/dev/version", "r");
if (!fp)
{
perror("fopen");
return 1;
}
char buf[4096];
size_t nread = fread(buf, sizeof(buf) - 1, 1, fp);
if (ferror(fp))
{
perror("fread");
return 1;
}
buf[nread] = 0; // null terminate it :)
printf("%s\n", buf);
fclose(fp);
}

View File

@ -1,29 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE* fp = fopen("/dev/uptime", "r");
if (!fp)
{
perror("fopen");
return 1;
}
char buf[4096];
size_t nread = fread(buf, sizeof(buf) - 1, 1, fp);
if (ferror(fp))
{
perror("fread");
return 1;
}
buf[nread] = 0; // null terminate it :)
long ms_uptime = atol(buf);
printf("up for %ld seconds\n", ms_uptime / 1000);
fclose(fp);
}

View File

@ -1,9 +0,0 @@
#pragma once
#include "fs/VFS.h"
namespace UptimeDevice
{
VFS::Node* create_new(const char* devname);
ssize_t read(VFS::Node* node, size_t offset, size_t size, char* buffer);
}

View File

@ -3,7 +3,6 @@
#include "fs/devices/Keyboard.h"
#include "fs/devices/Random.h"
#include "fs/devices/Serial.h"
#include "fs/devices/Uptime.h"
#include "fs/devices/Version.h"
#include "std/stdlib.h"
#include "std/string.h"
@ -30,7 +29,6 @@ VFS::Node* DeviceFS::get()
devfs_files[devfs_file_count++] = SerialDevice::create_new("serial");
devfs_files[devfs_file_count++] = RandomDevice::create_new("random");
devfs_files[devfs_file_count++] = KeyboardDevice::create_new("kbd");
devfs_files[devfs_file_count++] = UptimeDevice::create_new("uptime");
return devfs_root;
}

View File

@ -1,24 +0,0 @@
#include "fs/devices/Uptime.h"
#include "std/stdio.h"
#include "std/stdlib.h"
#include "std/string.h"
#include "thread/PIT.h"
VFS::Node* UptimeDevice::create_new(const char* devname)
{
VFS::Node* dev = new VFS::Node;
dev->read_func = UptimeDevice::read;
dev->inode = 0;
dev->length = 0;
dev->type = VFS_DEVICE;
dev->flags = 0;
strncpy(dev->name, devname, sizeof(dev->name));
return dev;
}
ssize_t UptimeDevice::read(VFS::Node* node, size_t, size_t size, char* buffer)
{
if (!node) return -1;
snprintf(buffer, size + 1, "%ld", PIT::ms_since_boot); // FIXME: Support offseting this read
return (ssize_t)size;
}