Commit Graph

2296 Commits

Author SHA1 Message Date
Jonas 'Sortie' Termansen 17d1b67a77 Fixed bug in fopen(3) where it didn't open correctly. 2012-01-18 12:40:31 +01:00
Jonas 'Sortie' Termansen ba2cb5103a Made Device::IsType 'const', because it is. 2012-01-18 01:11:17 +01:00
Jonas 'Sortie' Termansen 35fc0f6dfe Removed the old unused interrupt 177. 2012-01-15 19:00:05 +01:00
Jonas 'Sortie' Termansen 93fb66ff90 Refactored Interrupt handlers to provide a user pointer. 2012-01-15 18:32:42 +01:00
Jonas 'Sortie' Termansen ff9221de1a Updated ls(1) to use the DIR API. 2012-01-15 00:51:35 +01:00
Jonas 'Sortie' Termansen d2c4b1d6ac Added readdir(3), closedir(3), rewinddir(3), dirfd(3), fdopendir(3),
opendir(3).

Also added non-standard dregister(3), dunregister(3), dclearerr(3),
derror(3), deof(3), dnewdir(3), dcloseall(3).
2012-01-15 00:51:27 +01:00
Jonas 'Sortie' Termansen c8c34d3cdd readdirents(2) now properly reports ERANGE. 2012-01-15 00:43:13 +01:00
Jonas 'Sortie' Termansen f476a82498 Fixed idention error in ramfs. 2012-01-14 23:19:31 +01:00
Jonas 'Sortie' Termansen c94f6b64c3 readdirents(2) now returns ERANGE if insufficient storage space
was provided, but that the needed size could be copied to d_namelen.
2012-01-14 23:06:18 +01:00
Jonas 'Sortie' Termansen 8ef439b328 Fixed NULL-pointer in SysReadDirEnts. 2012-01-14 22:57:17 +01:00
Jonas 'Sortie' Termansen 8d18993584 Added stpcpy(3). 2012-01-14 17:20:17 +01:00
Jonas 'Sortie' Termansen a06902baf6 Added strcoll(3). 2012-01-14 16:44:48 +01:00
Jonas 'Sortie' Termansen 56084556bb Added stubs for truncate(2) and ftruncate(3). 2012-01-14 16:37:21 +01:00
Jonas 'Sortie' Termansen 0519af33ee Added stubs for rmdir(2) and mkdir(2). 2012-01-14 16:25:28 +01:00
Jonas 'Sortie' Termansen c5ddc6923a Added ENOSYS. 2012-01-14 16:09:30 +01:00
Jonas 'Sortie' Termansen 1824dd6867 Added memchr(3). 2012-01-09 01:38:44 +01:00
Jonas 'Sortie' Termansen 10a37e1f98 Added {,v}s{,n}printf(3). 2012-01-09 00:31:42 +01:00
Jonas 'Sortie' Termansen 91015a2ea7 Made the size_t declaration compatible with GCC. 2012-01-09 00:31:14 +01:00
Jonas 'Sortie' Termansen 66c411b43a sys/types.h now declares pid_t. 2012-01-08 23:25:11 +01:00
Jonas 'Sortie' Termansen df728efb8c Added strchr(3), strchrnul(3), strrchr(3). 2012-01-08 22:26:32 +01:00
Jonas 'Sortie' Termansen 4806f25e50 Added strtok(3), strtok_r(3), strspn(3), strcspn(3). 2012-01-08 21:59:21 +01:00
Jonas 'Sortie' Termansen 9064185bd8 Added memcmp(3). 2012-01-08 20:17:27 +01:00
Jonas 'Sortie' Termansen 46e717e30f Revert ".so's are no longer installed into sysroot as there are no kernel support."
This reverts commit e6db1874e7ed16a6987d5a86d7f6c10cd8b0ffff.

These dummy .so's are actually OK.
2012-01-08 15:53:10 +01:00
Jonas 'Sortie' Termansen 7cd5363af8 Disabled shared libaries in libmaxsi by default. 2012-01-08 15:49:33 +01:00
Jonas 'Sortie' Termansen 145da20c04 Added a libg (symlink to libc) and symlinks are now copied to sysroot. 2012-01-08 15:45:13 +01:00
Jonas 'Sortie' Termansen d3c16470e3 .so's are no longer installed into sysroot as there are no kernel support. 2012-01-08 15:39:40 +01:00
Jonas 'Sortie' Termansen 954fd11703 Added isalnum(3), isalpha(3), isblank(3), iscntrl(3), isdigit(3),
isgraph(3), islower(3), isprint(3), ispunct(3), isspace(3), isupper(3),
isxdigit(3), tolower(3), and toupper(3).
2012-01-08 15:35:35 +01:00
Jonas 'Sortie' Termansen ad200ffa91 Added getpagesize(2) with the new return type size_t.
This function is non-standard  and size_t is better than int here.
2012-01-08 14:58:57 +01:00
Jonas 'Sortie' Termansen 809bedd32b Just ignore the restrict keyword fully. 2012-01-08 14:30:50 +01:00
Jonas 'Sortie' Termansen 8eebe18922 Added an implementation of puts(3) because gcc needs it.
I still didn't add it to stdio.h since it's still stupid.
2012-01-08 14:30:50 +01:00
Jonas 'Sortie' Termansen 25d8551b26 Moved _start into crtbegin.o as that's where the cross compiler wants it. 2012-01-08 14:30:50 +01:00
Jonas 'Sortie' Termansen d3ad36b181 Made detected ATA devices available as /dev/ataN block devices. 2012-01-08 14:21:36 +01:00
Jonas 'Sortie' Termansen a3a2226bb5 Implemented a simple ATA PIO Mode driver that can read and write.
Read operations are enabled by default, but you must set DISKWRITE=1 in
makeflags before write operations are permitted. This protects against
accidentally corrupting the existing filesystems on the system.
2012-01-08 14:20:39 +01:00
Jonas 'Sortie' Termansen 4e0f57f4d7 DevFileWrapper now understands and respects O_TRUNC. 2012-01-08 14:15:51 +01:00
Jonas 'Sortie' Termansen 75282bdab7 Added -fno-rrti to the C++ compile flags in the cross-compiler. 2012-01-03 21:54:49 +01:00
Jonas 'Sortie' Termansen 9a77901883 Added missing prototypes to stdio.h. 2011-12-30 01:23:00 +01:00
Jonas 'Sortie' Termansen 73a7e8f53d Forgot to actually add remove(3) in the previous commit. 2011-12-30 01:13:41 +01:00
Jonas 'Sortie' Termansen deee5e4335 Added a partial implementation of remove(3), since rmdir(2) is missing. 2011-12-30 01:11:33 +01:00
Jonas 'Sortie' Termansen 5d16b5c61e Added getchar(3) and putchar(3). 2011-12-30 01:06:27 +01:00
Jonas 'Sortie' Termansen 66999ff94a Added putc(3) and getc(3). 2011-12-30 01:03:24 +01:00
Jonas 'Sortie' Termansen d39d4222b5 Added fputc(3) and fgetc(3). 2011-12-30 00:55:59 +01:00
Jonas 'Sortie' Termansen 76800553da Clarified comment about typedef struct _FILE FILE. 2011-12-30 00:42:36 +01:00
Jonas 'Sortie' Termansen 064b69d2b6 Added fseeko(3) and ftello(3). 2011-12-30 00:36:39 +01:00
Jonas 'Sortie' Termansen 912b2f78f0 Implemented the fdio backend of fseek(3) and ftell(3). 2011-12-26 23:15:52 +01:00
Jonas 'Sortie' Termansen 648b324385 Added lseek(2). 2011-12-26 23:12:12 +01:00
Jonas 'Sortie' Termansen d6d404f3f0 Added a simple pager program while we wait for less(1) to be ported. 2011-12-26 17:23:40 +01:00
Jonas 'Sortie' Termansen 36b01eb2d3 Fixed the horrible 'nofoo' bug!
When compiled with gcc 4.6.1, 32-bit Sortix would triple fault during
early boot: When the TLB is being flushed, somehow a garbage value had
sneaked into Sortix::Memory::currentdir, and a non-page aligned (and
garbage) page directory is loaded. (Triple fault, here we come!)

However, adding a volatile addr_t foo after the currentdir variable
actually caused the system to boot correctly - the garbage was written
into that variable instead. To debug the problem, I set the foo value
to 0: as long as !foo (hence the name nofoo) everything was alright.

After closer examination I found that the initrd open code wrote to a
pointer supplied by kernel.cpp. The element pointed to was on the
stack. Worse, its address was the same as currentdir (now foo).

Indeed, the stack had gone into the kernel's data segment!

Turns out that this gcc configuration stores variables in the data
segment in the reverse order they are defined in, whereas previous
compilers did the opposite. The hack used to set up the stack during
early boot relied on this (now obviously incorrect) fact.

In effect, the stack was initialized to the end of the stack, not
the start of it: completely ignoring all the nice stack space
allocated in kernel.cpp.

I did not see that one coming.
2011-12-25 03:41:59 +01:00
Jonas 'Sortie' Termansen 7bc1fa259e Made Sortix compatible with gcc 4.6.1.
This commit fixes some instances of uninitialized memory.

In addition, the bootstrap tables for x64 are moved around a bit,
in this awful game of placing stuff where it won't collide with grub.
2011-12-25 00:10:56 +01:00
Jonas 'Sortie' Termansen 2b3b4ed62a error(3) and perror(3) now writes to stderr. 2011-12-24 04:39:16 +01:00
Jonas 'Sortie' Termansen fdbd4ca90d Implemented large parts of the stdio(3), including fprintf.
Made FILE an interface to various backends. This allows application writers
to override the standard FILE API functions with their own backends. This
is highly unportable - it'd be nice if a real standard existed for this.
glibc already does something like this internally, but AFAIK you can't hook
into it.

Added fdopen(3), fopen(3), fregister(3), funregister(3), fread(3),
fwrite(3), fseek(3), clearerr(3), ferror(3), feof(3), rewind(3), ftell(3),
fflush(3), fclose(3), fileno(3), fnewline(3), fcloseall(3), memset(3),
stdio(3), vfprintf(3), fprintf(3), and vprintf(3).

Added a file-descriptor backend to the FILE API.

fd's {0, 1, 2} are now initialized as stdin, stdout, and stderr when the
standard library initializes.

fcloseall(3) is now called on exit(3).

decl/intn_t_.h now @include(size_t.h) instead of declaring it itself.

Added <stdint.h>.

The following programs now flush stdout: cat(1), clear(1), editor(1),
init(1), mxsh(1).

printf(3) is now hooked up against vprintf(3), while Maxsi::PrintF
remains using the system call, for now.
2011-12-24 04:28:34 +01:00