skift-org / skift Goto Github PK
View Code? Open in Web Editor NEW๐ฅ A modern delightful operating system
Home Page: https://skiftos.org/
License: MIT License
๐ฅ A modern delightful operating system
Home Page: https://skiftos.org/
License: MIT License
--- !!! ------------------------------------------------------------------------
KERNEL PANIC
// System consumed all the paper for paging!
CPU EXCEPTION: 'General protection fault' (INT:13 ERR:8668) !
at sources/kernel/sources/cpu/isr.c isr_handler() ln86
Diagnostic:
The system was running for 285 tick.
Thread ID=9 child of process 'kernel' ID=0.(ESP=0x2A4748 STATE=0)
Threads:
Thread ID=0 child of process 'kernel' ID=0.(ESP=0x23EDCC STATE=0)
Thread ID=1 child of process 'kernel' ID=0.(ESP=0x29CE20 STATE=0)
Thread ID=2 child of process 'kernel' ID=0.(ESP=0x29DF90 STATE=0)
Thread ID=3 child of process 'kernel' ID=0.(ESP=0x29F0E0 STATE=0)
Thread ID=4 child of process 'kernel' ID=0.(ESP=0x2A0240 STATE=0)
Thread ID=5 child of process 'kernel' ID=0.(ESP=0x2A13A0 STATE=0)
Thread ID=6 child of process 'kernel' ID=0.(ESP=0x2A2500 STATE=0)
Thread ID=7 child of process 'kernel' ID=0.(ESP=0x2A3650 STATE=0)
Thread ID=8 child of process 'kernel' ID=0.(ESP=0x2A47B0 STATE=0) <-- Overlaping stack
Thread ID=9 child of process 'kernel' ID=0.(ESP=0x2A4748 STATE=0) <--
Thread ID=10 child of process 'kernel' ID=0.(ESP=0x2A6A70 STATE=0)
Thread ID=11 child of process 'kernel' ID=0.(ESP=0x2A7FD0 STATE=0)
GS=10 FS=10 ES=10 DS=10
EDI=E ESI=B500 EBP=8 USELESS=2A4734
EAX=2A4748 EBX=3E ECX=2A5980 EDX=20
INTNO=D ERRCODE=8668 EIP=10569E CS=8 FLAGS=212
CR0=80000011 CR2=0 CR3=119000 CR4=0
System halted!
00105680 <irq_common>:
105680: 60 pusha
105681: 1e push ds
105682: 06 push es
105683: 0f a0 push fs
105685: 0f a8 push gs
105687: 66 b8 10 00 mov ax,0x10
10568b: 8e d8 mov ds,eax
10568d: 8e c0 mov es,eax
10568f: 8e e0 mov fs,eax
105691: 8e e8 mov gs,eax
105693: fc cld
105694: 89 e0 mov eax,esp
105696: 54 push esp
105697: e8 04 f2 ff ff call 1048a0 <irq_handler>
10569c: 89 c4 mov esp,eax
;; HERE is the fault
10569e: 0f a9 pop gs
1056a0: 0f a1 pop fs
1056a2: 07 pop es
1056a3: 1f pop ds
1056a4: 61 popa
1056a5: 83 c4 08 add esp,0x8
1056a8: cf iret
It's much more efficient to use macros for the ctype functions, you'll reduce the amount of cycles needed thus speeding up the os. It won't be a big improvement but in the long run when you have a program that uses ctype functions, it'll be way faster then. File I'm reffering to https://github.com/maker-dev/skift/blob/master/packages/maker.skift.framework/sources/ctype.c.
I have already started writing the code for the editor, but now I see that the libraries I have used are probably not in the skiftOS libraries.
Is there a library that manipulates the terminal attributes like termios.h?
Here I leave the repo where is the publisher's code: https://github.com/cristian-programmer/skiftTextEditor
guided me from this wiki: https://viewsourcecode.org/snaptoken/kilo/index.html
Then I write the program in the directories of skiftOS
I believe we need a system defaults kind of config file in /etc/, maybe we call it skift.conf or sys.conf. It should store the hostname, localizations, etc.
Please add PCI and PCIe device support then we can start having more support for hardware. I can add PCI but not PCIe. More documentation on adding stuff like this is needed for me to add this feature.
It's much better and will save up memory to declare a static variable inside of a header file which is included and contains the vga font. I'm referring to this file and line https://github.com/maker-dev/skift/blob/master/packages/maker.skift.framework/sources/skift/drawing.c#L138.
Currently the code looks like this:
extern unsigned char vgafont16[256 * 16];
But it can be done like this:
#include "vgafont.h"
You type "boot.s" etc. I looked at the assembler file. It looks very similar to https://wiki.osdev.org/Bare_Bones. By the way, isn't it possible to commit such a thing and commit something illegal? If I know it wrong, can I get permission from the OsDev Wiki? Thank you.
Although this probably is a known issue, I submit it here anyway, just in case.
I get this output of the kernel panic when I try to fill something in Paint.
--- !!! ------------------------------------------------------------------------
KERNEL PANIC
// Abort, Retry, Fail?
CPU EXCEPTION: 'Page fault' (INT:14 ERR:0) !
throw by arch/x86/Interrupts.c interrupts_handler() ln87
Diagnostic:
The system was running for 831156 tick.
- - NESTED - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NESTED PANIC
// Abort, Retry, Fail?
CPU EXCEPTION: 'Page fault' (INT:14 ERR:0) !
throw by arch/x86/Interrupts.c interrupts_handler() ln87
Diagnostic:
The system was running for 831156 tick.
Hi, do you think it would be useful to invest in writing some programs for the user space? As a code editor for example
Currently, anyone who wants to do anything with skiftOS has to look through the source code. Probably header files, and the issue with that is those don't have docs.
Currently, there is no documentation on custom APIs. (most important may very well be widgets) Also, if you want to port a program, even if it would other wise work on skiftOS, you would have to figure out how to add it, based on pre-existing stuff in [insert area where stuff is added (looks like Makefile)].
good day
it would be good if an official link of the microsoft code style was added, I reviewed it by google but I found code style for c # and c ++, but not for c.
thanks.
We need sound! I think audio devices should be stored in /dev/snd
so if we were to add pc speaker support then the path to it would be /dev/snd/pcspkr
.
Hello I am following the history of your commit, to do from 0 the skiftOS project, and be able to get involved in this development.
this is my repository:
https://github.com/cristian-programmer/-skiftOSReplica
I followed the build instructions (on archlinux), and I get this error when building:
~/Documents/Builds/skift $ make all
[ICON] console.png
Unknown option --export-png
make: *** [Makefile:239: /home/johan/Documents/Builds/skift/build/sysroot/res/icons/console.png] Error 1
The option --export-png
isn't recognized on my inkscape installation.
At 0x203
Like what I said in #3, you can use macros in https://github.com/maker-dev/skift/blob/master/packages/maker.skift.framework/sources/skift/elf.c.
The key M is bound to a comma.
Should be v = -v
.
You recently asked on reddit about an optimization problem with this code:
timestamp_t __plug_system_get_time(void)
{
timestamp_t timestamp = 0;
__syscall(SYS_SYSTEM_GET_TIME, (int)×tamp, 0,0,0,0);
return timestamp; // get 0 here
}
The solution given was to mark timestamp
as volatile
by doing:
volatile timestamp_t timestamp = 0;
This only masks the real problem that is in __syscall
. You have this code:
static inline int __syscall(syscall_t syscall, int p1, int p2, int p3, int p4, int p5)
{
int __ret;
__asm__ __volatile__("push %%ebx; movl %2,%%ebx; int $0x80; pop %%ebx"
: "=a"(__ret)
: "0"(syscall), "r"((int)(p1)), "c"((int)(p2)), "d"((int)(p3)), "S"((int)(p4)), "D"((int)(p5)));
return __ret;
}
You potentially pass addresses via registers. GCC isn't being told that what those registers point to are having their data read and/or written to. Because of that the compiler is free to assume that what memory those registers point at is not being used, only the address in the register itself is being used. The GCC documentation suggests for a generic case like this that you add a "memory"
clobber to ensure that all data is realized into memory (and restored afterwards if need be). The solution is to make this change:
static inline int __syscall(syscall_t syscall, int p1, int p2, int p3, int p4, int p5)
{
int __ret;
__asm__ __volatile__("push %%ebx; movl %2,%%ebx; int $0x80; pop %%ebx"
: "=a"(__ret)
: "0"(syscall), "r"((int)(p1)), "c"((int)(p2)), "d"((int)(p3)), "S"((int)(p4)), "D"((int)(p5))
: "memory");
return __ret;
}
There is a comment thread about this under your original Reddit post that provides more information
I was just trying out this great operating system, but the maximize and minimize buttons don't doing anything in the GUI.
While looking through the interrupts assembly code, I noticed a few ISRs have errors codes that shouldn't and some have no error handling when they do. I checked my unabridged Pentium 4 book while looking through the handlers and the OSDev wiki backs me up (https://wiki.osdev.org/James_Molloy%27s_Tutorial_Known_Bugs#Problem:_ISR_17_and_30_have_error_codes). ISR 8 should have no error code while ISR 30 should handle errors. I don't know if I missed any others but those are the ones I've found that should be fixed.
This is probably because the app is loading all demos at the same time (IMO, I didn't look at the source code, because I probably won't understand anything).
If that's the case, you would probably want to load only the selected demos.
After running yay -S mtools xorriso
, and running ./buildtools.py run
I get this:
Skipping ramdisk
Generating bootdisk:
Copying the kernel
Copying the ramdisk
Generating the ISO
ERROR: Failled to generate bootdisk... (check if xorriso or mtools is installed)
Aborted!
After running toolchain/build-it!.sh and typing make all
, im getting:
i686-pc-skift-gcc -std=gnu11 -O2 -Wall -Wextra -Werror -Ilibraries -D__COMMIT__=\"fcffac7\" -ffreestanding -nostdlib -Ikernel/ -c -o kernel/filesystem.kernel.o kernel/filesystem.c
make: i686-pc-skift-gcc: Command not found
Makefile:306: recipe for target 'kernel/filesystem.kernel.o' failed
make: *** [kernel/filesystem.kernel.o] Error 12
While testing the system, I noticed the 3D Cube demo was running less than 30 FPS and I checked the code and I think we could get it to run at 60FPS or higher.
Hello, I had a series of problems compiling skiftOS.
First this is the machine that I use
ubuntu 16.04.5 LTS
in a virtual machine.
Install all the dependencies correctly using the ones you expose in the file: building.md
and use the command "./build-it!.sh" for the toolchain
it worked correctly.
But I made a mistake and use the following two commands
./buildtools.py build-all, ./buildtools.py rebuild-all
I delete the build folder, now I do not build it using the command ./buildtools.py build-all again,does nothing.
thanks
You'll have better compatibility if you use uintsz_t
based c int types. So you'd end up with uint8_t
, uint16_t
, uint32_t
, etc.
The users should be stored in /System/users.json
and should be like this:
[
{ "gid": 0, "uid": 0, "username": "root", "nickname": "Root User", "description": "The superuser", "home": "/home", "shell": "/bin/sh", "password": "SHA512 ENCRYPTED STRING" }
]
With the big brush, there's a drawing issue on the canvas. This bug does not seem to be there with the "normal" pencil. See attached GIF.
It only occurs when moving the mouse quickly. When it's being moved kinda slowly, the painting behavior is normaL I (still) apologize for bad GIF quality.
(Yet another @busybox11 issue)
PCI may not work, as I'm using the same method of reading and writing in my kernel and I got this comment when asking for help
Hi! I want make distro from your os but some features is missing. Can you delevop drivers & some libraries like HTML, TCP/UDP? If you are can dev the request it's will be very good. Greets.
is possible use gdb for test you operating system ?
When typing in a command, the shell hang and segfault.
This seem to occure in shell_split
this function try to call calloc a lot of time.
This only occure when optimisations are turn on for libc.
SkiftOS could use a driver for 3dfx GPUs, their documentation is freely available, and (if you really wanted) you could pick one up on Amazon or eBay. 3dfx is also the family emulated by QEMU.
Hello colleagues, why do you need to call global constructors before starting the kernel? I understand that in a user space program it is called before the main function, to do something,
But what should the core call before starting?
I get a GPF (INT: 13, ERR: 84DC) error when booting.
thinking about problems with the lodepng library when running the make all
command, which always fails when requesting the lodepng library, which is not normally found when doing the git clone.
it would be nice to add to the building.md file the commands:
git submodule init
git submodule update
with this brings the dependencies of lodepng and the compilation of the kernel will not fail
Pressing the Q key prints an A to the screen, and pressing the A key prints a Q.
This is kinda unintuitive, we have to move the window around to have access to the menu button.
A better solution would be to place the windows in the middle of the screen, or placing them right after the panel, with a little padding.
Since I can't describe every situation, i'm going to sum up what I've seen so far for this bug.
First off. When you're moving around the mouse cursor pretty fast AND pressing certains keys at the same time, the mouse cursor will move significantly faster and / or "teleport" (I'm not sure about what it exactly does, but basically the cursor is not behaving as it should).
Also, when pressing multiple keys at the same time AS LONG AS moving the mouse cursor, it'll behave just like with one key, but worse (like, going to an edge of the screen).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.