Commit Graph

25 Commits

Author SHA1 Message Date
Vincent Ollivier 2b91c9ccc7
Add e1000 driver (#337)
* Add e1000 network card support

* Read MAC from EEPROM

* Read MAC without EEPROM

* Add device id for ThinkPad X200

* Fix makefile merge

* Add todo list

* Add WIP implementation

* Add qemu trace to makefile

* Rewrite parts of the implementation

* Fix descriptor cloning

* Return received buffer

* Break from loop when transmitted

* Comment out debug code

* Comment out more code

* Rename allocator variables

* Fix debug issue

* Add more device ids

* Reset RxDesc status when done

* Process packet even if ICR_RXT0 is set

* Remove debug output

* Refactor code

* Fix typo

* Fix RDT updates

* Update documentation

* Update makefile to match doc

* Group network cards in readme

* Refactor code

* Avoid using ICR to check for new packets

* Fix panic on invalid datagram size

* Refactor code to stay below 80 chars

* Increase buffer size

* Add FIXME to test for EOP

* Clean up code

* Add PCI id for I217-LM

* Update hardware page

* Add PCI id for the Intel PRO/1000 GT

* Update hardware page

* Fix init_tx for Intel I217-LM

* Refactor comments

* Update website

* Fix whitespace

* Update doc for VirtualBox

* Reorder cards in doc

* Reorder cards in doc

* Restore signal

* Move makefile trace option to qemu

* Add ThinkCentre M83 to hardware list

* Increase receive buffer back to 64

* Refactor reset

* Print MAC address in uppercase

* Disable interrupts

* Add TODO comment
2024-04-08 15:23:40 +02:00
Vincent Ollivier d22c504726
Improve system information (#553)
* Add socket command to manual

* Update syscall doc

* Update copyright year in help command

* Fix lisp include

* Fix error styling in shell

* Use uppercase hex

* Update website

* Move some CSI color positions

* Update line-height
2023-12-01 16:51:02 +01:00
Vincent Ollivier de9dc08cf0
Fix read on fuse host driver (#519)
* Add lock

* Rename fh to handle

* Fix read with offset
2023-07-21 23:24:49 +02:00
Vincent Ollivier 86a8319515
Publish release 0.10.0 (#507)
* Regenerate www for lisp doc

* Update example email address

* Fix changelog

* Rewrite old changelog as list

* Update changelog

* Update version

* Add links to changelog

* Fix links

* Add date to lisp changelog

* Fix banner for longer version number

* Update screenshot

* Regenerate www

* Remove boot.png

* Update lisp version to 0.5.0

* Update chess version to 0.2.0

* Add screenshot script
2023-06-21 20:17:54 +02:00
Vincent Ollivier 3348bb7150
Remove allow other (#447) 2022-12-01 23:06:26 +01:00
Vincent Ollivier 407d20c75c
Improve FUSE driver with write and delete (#292)
* Add write to FUSE driver

* Update code

* Fix file creation

* Remove debug print

* Remove more print statements

* Remove unsupported function

* Fix entries

* Allocate space for new dir entry

* Fix dir block size computation

* Add unlink

* Refactor private methods

* Remove debug operation
2022-04-15 13:00:54 +02:00
Vincent Ollivier 5cdf2d4db3
Refactor code (#288)
* Remove test command

* Add changes suggested by clippy

* Update crypto crates

* Fix offset in fuse driver

* Fix RNG on old CPUs

* Add disabled logging to fuse driver

* Remove deplicate code with a generator

* Fix scan of invalid path

* Rewrite fuse fs reading
2021-12-22 20:49:17 +01:00
Vincent Ollivier 71d83cd688
Add dynamical disk information (#252)
* Add sys::ata::Drive struct

* Add fs size to superblock

* Add missing usage option to disk command

* Update changelog

* Store ata::Drive in AtaBlockDevice

* Store allocated block count in superblock

* Rename Superblock to SuperBlock

* Add superblock to memfs

* Use Block instead of LinkedBlock for BlockBitmap

* Rename BlockBitmap to BitmapBlock

* Fix removed const

* Remove some hardcoded constants

* Fix BitmapBlock::free_all

* Allocate the whole remaining disk space

* Use memory size to alloc memfs

* Dynamically use half of the memory for the heap

* Add SuperBlock::check_ata

* Move init to mod.rs

* Update python fuse

* Add BITMAP_SIZE constant

* Fix available space computation

* Limit the heap to 8 GB max

* Fix memfs size
2021-10-04 21:37:47 +02:00
Vincent Ollivier e55ff2446e
Add beep command (#234)
* Add beep command

* Add pc speaker to qemu

* Add source to beep musics

* Use beep -l instead of beep -t

* Reuse PIT manipulation from time module
2021-08-21 10:57:39 +02:00
Vincent Ollivier bbcfc66e18
Add time to dir entry (#215)
* Add creation time to dir entry

* Update and publish fuse script

* Change boot offset in doc

* Change creation time into last modified time

* Add sort parameter to list command

* Add error for missing sort key

* Add shortcut params for sort
2021-07-26 22:35:32 +02:00
Vincent Ollivier 9ca14297c5
Change vga font (#201)
* Add vga crate

* Rename vga option to screen

* Add fonts

* Add bold font weight

* Revert "Add bold font weight"

This reverts commit aa76cc9800.

* Rename screen output to video output

* Print extended ascii chars

* Fix http empty lines printing

* Add PSF fonts support

* Replace vga crate by internal method to set the font

* Add vga command

* Add psf font files
2021-07-13 22:10:02 +02:00
Vincent Ollivier 25d5428e66 Add virtualbox script 2021-06-27 16:56:24 +02:00
Vincent Ollivier 8b33c3979f
Update ATA driver (#41)
* Read from alternate status register in wait

* Add busy loop

* Update bochs config
2020-04-13 11:36:04 +02:00
Vincent Ollivier 0a4b26a8bb
Improve filesystem (#24)
* Add doc about fs

* Add console on diskless boot

* Enumerate all disks

* Avoid hardcoded allocation of root dir

* Refactor ATA code

* Add BlockDevice

* Add mkfs command

* Update readme

* Add warning in the readme about disk modifications

* Use all bits inside BlockBitmap data

* Add makefile

* Overwrite only bootloader and kernel in disk image

* Update readme

* Add doc about mkfs

* Update mkfs command
2020-02-13 09:42:22 +01:00
Vincent Ollivier 1cca81ff68 Add config for using Bochs 2020-02-03 21:18:06 +01:00
Vincent Ollivier 1b6f519e67
Add geotime command (#14)
* Add libm crate

* Add geotime command

* Rename kernel::clock::clock_monotonic to kernel::clock::uptime

* Rename kernel::clock::clock_realtime to kernel::clock::realtime

* Use utc for rtc

* Fix clock in log
2020-02-03 09:45:53 +01:00
Vincent Ollivier 4fd7d68a63
Add network stack (#12)
* Display MAC address

* Add kernel::pci::find_device

* Mask lower bits of 16-bit Memory Space BAR

* Use array instead of vector for MAC address

* Split interrupts module

* Use IRQ constants instead of InterruptIndex enum

* Replace kernel::sleep by kernel::time

* Add kernel::idt::set_irq_handler

* Add interrupt handler for RTL8139

* Enable bus mastering for RTL8139

* Setup NIC

* Add features for vga/serial and qwerty/dvorak

* Add smoltcp crate

* Use EthernetAddress from smoltcp

* Add RTL8139 struct to implement smoltcp Device

* Save detected device

* Add kernel::mem::translate_addr

* Use physical address of rx_buffer

* Add command to read raw network data

* Parse packet header and length

* Fix missing ascii on last line

* Take CRC into account for packet length

* Fix compilation error

* Move buffer pointers after packet received

* Use buffer slice instead of clone in RxToken

* Add packet transmission and dhcp client

* Configure network interface with DHCP client

* Add debug mode to network interface

* Clean dhcp command output

* Add ip command

* Clean up commands output

* Count number of packets transmitted and received

* Add route command

* Add kernel::random::rand16

* Handle carriage return char

* Add HTTP client

* Improve http command output

* Add DNS resolver command

* Parse DNS responses to A IN queries

* Resolve http host

* Check if interface is ready before operations

* Add timeout to polling loops

* Fix sleep during polling

* Add verbose arg to http command

* Add State struct to Device struct

* Add subcommand config and dump to net command

* Add MTU to RX_BUFFER_LEN when using WRAP

* Fix first transmission index

* Refactor TxToken implementation

* Add user agent to http requests

* Add more comments to code

* Add llvm-tools-preview component to readme

* Add method to translate IRQ into system interrupt

* Clear IRQ mask in set_irq_handler

* Refactor driver code

* Sleep less rather than more

* Add rand32

* Disable RTL8139 interrupts

* Use arrays instead of vectors for buffers

* Add minimum sleep duration

* Add phy_addr to dry init

* Use CAPR and CBR to compute rx buffer offset

* Add debug for alloc issue with continuous physical memory

* Fix timeout in loops

* Add unused buffer to push the rx buffer into contiguous memory

* Add doc about network

* Update readme

* Add read /net/<proto>/<host>/<path> subcommand
2020-02-02 18:55:20 +01:00
Vincent Ollivier 4d96d8e790 Update readme 2020-01-15 22:33:48 +01:00
Vincent Ollivier b77e02a472
Support disks in ATA PIO Mode (#3)
* Introduce ATA PIO

* Refactor drives detection

* Refactor drive identification

* Add read from disk

* Add write to disk

* Add Bus#setup to dry read/write code

* Add hex viewer
2020-01-12 08:56:29 +01:00
Vincent Ollivier 44a11cb3e0 Use localtime for RTC 2020-01-10 08:33:28 +01:00
Vincent Ollivier fa5620e7c5 Fix device detection 2020-01-09 22:51:21 +01:00
Vincent Ollivier 51e192d55c Add PCI devices detection 2020-01-09 10:18:15 +01:00
Vincent Ollivier c32452b4d0 Add line editing in shell 2020-01-07 10:48:09 +01:00
Vincent Ollivier 03e9744e67 Update cool-retro-term script 2020-01-06 22:45:54 +01:00
Vincent Ollivier c877e06def Add script to run in cool-retro-term 2020-01-05 22:25:33 +01:00