Commit Graph

283 Commits

Author SHA1 Message Date
bjorn3 8ffe704e7a Remove yet another unnecessary change 2017-04-28 18:44:37 +02:00
bjorn3 4441b750cf Remove unnecessary change 2017-04-28 18:43:39 +02:00
bjorn3 c9fdc4beae Make it working 2017-04-28 18:42:33 +02:00
bjorn3 4c006bca48 Remove UserOrListHandle 2017-04-28 16:18:41 +02:00
bjorn3 80afcc8879 Implement listing all schemes using : scheme 2017-04-28 15:40:15 +02:00
Jeremy Soller 0a457bdced Merge pull request #12 from InsidiousMind/fix-pit-not-context-switching
Fix PIT Interrupt Not Context Switching [irq]
2017-04-25 17:41:55 -06:00
Andrew Plaza 2fc4454f5e set PIT_TICKS to 0 in context::switch() 2017-04-25 16:59:14 -04:00
Andrew Plaza 5ba02ca940 Reset PIT_TICKS to 0 on context::switch, change condition for context::switch [irq]
Set the counter to 0 when context is to be switched in the PIT interrupt,
and change the condition for context switching from % 10 to >= 10.
2017-04-25 14:40:23 -04:00
Andrew Plaza 7127e14b5d Fix PIT Interrupt Not Context Switching [irq]
PIT interrupt should context switch or else all of redox crashes.
This will fix programs like the Snake game crashing all of Redox.
A global AtomicUSize counter was added, and a line to switch contexts
on every 10 PIT interrupts in irq.rs.
2017-04-24 22:07:32 -04:00
Jeremy Soller dd98bfec5c Fix typo in live scheme 2017-04-19 22:00:30 -06:00
Jeremy Soller efd64d55e1 Bug fixes for fcntl and o_cloexec
Add fcntl to schemes
Fix debug: hang
2017-04-19 21:56:09 -06:00
Jeremy Soller 40ff16e42d Add __rust_allocate_zeroed to work with newest nightly 2017-04-18 21:26:18 -06:00
Jeremy Soller d036c667a1 Perform cloexec logic in kernel 2017-04-16 12:49:54 -06:00
Jeremy Soller ea1150cd9b Implement CLOEXEC for root scheme and initfs 2017-04-15 22:35:05 -06:00
Jeremy Soller 9d39317f95 Fix issue where ppid changes during child close 2017-04-15 20:29:08 -06:00
Jeremy Soller 66120cf201 Fix deallocation issues by ignoring deallocation on temporary page 2017-04-15 19:56:48 -06:00
Jeremy Soller 800e6c6de7 Free page tables during unmap, if empty 2017-04-15 19:22:17 -06:00
Jeremy Soller 1e8df4b905 Add sys:iostat 2017-04-15 09:58:03 -06:00
Jeremy Soller a38f32c735 Add path implementation to most kernel schemes 2017-04-15 09:50:02 -06:00
Jeremy Soller 7b5873e460 Allow allocation of larger sizes 2017-04-14 21:17:31 -06:00
Jeremy Soller b3a3caf191 Fix memmove 2017-04-14 21:07:02 -06:00
Jeremy Soller 6fef10bcb1 Merge branch 'master' of https://github.com/redox-os/kernel 2017-04-14 20:59:32 -06:00
Jeremy Soller a9d92df5fa Implement frame recycler 2017-04-14 20:59:27 -06:00
Jeremy Soller 903432f057 Fix issue with reusing temporary page frame 2017-04-14 20:59:01 -06:00
Jeremy Soller 7c1d5d8306 Disable SMP startup, fix issue with reusing trampoline frame 2017-04-14 20:58:23 -06:00
Jeremy Soller 0a72d1cbd8 Merge pull request #11 from pi-pi3/faster-externs
A faster implementation of the memcpy family
2017-04-14 16:49:58 -06:00
pi_pi3 5c1e619063 Avoid multiplication in memcpy family functions
Instead of multiplying everything by 8[/4], now addition is used. That
way code is prettier.
2017-04-14 14:51:04 +02:00
pi_pi3 c4fc76f844 A faster implementation of the memcpy family
The default implementation of the memcpy, memmove, memset and memcmp
functions in the kernel file `extern.rs` uses a naive implementation
by copying, assigning or comparing bytes ony by one. This can be slow.
This commit proposes a reimplementation of those functions by copying,
assigning or comparing in group of 8 bytes by using the u64 type and
its respective pointers instead of u8. Alternative version for 32-bit
architectures are also supplied for future compatibility with x86.
Both version first copy whatever they can with wide word types. The
tail, i.e. the final few bytes that do not fit in a dword or qword
are then copied byte by byte.

Here is a comparison of copying 64kiB (65536 bytes) on stack:

x86_64-unknown-linux-gnu: (64-bit)
       | naive (ns) | fast (ns) | speedup (x)
-------|------------|-----------|------------
memcpy |   204430   |   32994   |   ~6.20
memmove|   202540   |   33186   |   ~6.10
memset |   163391   |   23884   |   ~6.84
memcmp |   205663   |   34385   |   ~5.98

i686-unknown-linux-gnu: (32-bit)
       | naive (ns) | fast (ns) | speedup (x)
-------|------------|-----------|------------
memcpy |   206297   |   66858   |   ~3.09
memmove|   204576   |   70326   |   ~2.91
memset |   165599   |   50227   |   ~3.30
memcmp |   204262   |   70572   |   ~2.89

Copying on the heap behaves simmilarly.

All tests performed on Intel i5 6600K (4x4.2GHz),
ArchLinux Kernel 4.8.12-3 x86_64.
2017-04-14 14:37:32 +02:00
Jeremy Soller 56a533fbbc Add linker flavor 2017-04-13 19:46:48 -06:00
Jeremy Soller 4204d9905e Merge branch 'master' of https://github.com/redox-os/kernel 2017-04-11 21:27:44 -06:00
Jeremy Soller c4fb60f216 Implement script file support 2017-04-11 21:27:39 -06:00
Jeremy Soller d9e95448a4 Merge pull request #10 from xTibor/fix_initfs
Fix the listing of `initfs:` directories
2017-04-11 06:23:28 -06:00
xTibor 1f5bea611d Fix the listing of initfs: directories
There was a bug at the `initfs` generation which made the listing of the contents of the `initfs:`subdirectories impossible from the command line.

The subdirectory listing data had the full paths of the files (like `bin/ahcid\nbin/bgad\n...`) when it should just only be the names of the files (`ahcid\nbgad\n...`)
2017-04-11 05:26:10 +02:00
Jeremy Soller e43f5dda81 Implement timeouts
Cleanup utf8 path error handling
2017-04-08 21:59:30 -06:00
Jeremy Soller b286e69c9d Fix shutdown by disabling APs 2017-04-07 21:49:32 -06:00
Jeremy Soller a7f35e14cc Cleanup debug scheme 2017-04-05 20:11:51 -06:00
Jeremy Soller d26a9ee990 Fix goblin include 2017-04-05 19:10:17 -06:00
Jeremy Soller e860c9efdc Merge pull request #9 from redox-os/refactor
Refactor
2017-04-05 17:36:36 -06:00
Jeremy Soller 2087544ea7 Move all files to src 2017-04-03 21:47:01 -06:00
Jeremy Soller ff93e9cb82 Cleanup some 2017-04-03 21:16:50 -06:00
Jeremy Soller be7f8d64e6 Increase kernel heap, use crates version of goblin 2017-04-01 21:10:55 -06:00
Jeremy Soller cbacd0eea7 Merge pull request #7 from AdamNiederer/patch-1
Fix spelling & grammar in README.md
2017-03-27 06:56:01 -06:00
Adam Niederer 0ae08c52f6 Fix spelling & grammar in README.md 2017-03-26 22:51:28 -04:00
Jeremy Soller 7817122662 Loop on serial input
Fix issue with serial and cascade interrupts not being ackd
2017-03-24 20:38:02 -06:00
Jeremy Soller 906ef94ffd Fix bug with sleep - wake is not cleared after it occurs
Do not initialize waitcondition with capacity
2017-03-21 20:30:46 -06:00
Jeremy Soller ffd7594971 Disable century register for now 2017-03-20 21:47:18 -06:00
Jeremy Soller 228cd79cd4 Refactor ACPI, implement poweroff correctly using the DSDT in ACPI 2017-03-19 16:45:19 -06:00
Jeremy Soller e726234bc6 Fix style of new ACPI code, reduce warnings 2017-03-19 09:34:54 -06:00
Jeremy Soller 643e1f6552 Merge pull request #6 from CWood1/rtc-century
Implemented reading from RTC Century counter in x86_64 arch, if available
2017-03-19 07:29:30 -06:00
Connor Wood f79424aeac Fully implemented reading the RTC century counter, and laid out initial infrastructure for ACPI information to be used across the kernel, in the x86_64 architecture.
- Implemented a global variable, ACPI_TABLE, behind a mutex, which contains the ACPI information pertinent to the rest of the kernel, currently solely containing a pointer to the FADT.
- Split device initialization into two categories - "core" devices, such as the PIC and local APIC, necessary for initializing the rest of the kernel, and "non-core" devices such as serial and RTC, which are to be initialized last.
- Checked for the presence of the century register, and consequentially read from, in the RTC code, now factored into the date calculation. The location of the register is pulled from the "century" field in the FADT.
- Modified page unmapping in the ACPI code, such that any tables to be stored globally (currently only the FADT) are not unmapped after reading, such that they can be stored in globally accessible pointers without causing page faults.
2017-03-18 16:08:45 +00:00