Convert to cookbook based build

This commit is contained in:
Jeremy Soller 2017-05-10 21:39:05 -06:00
parent 9034701e8f
commit c9950beec2
117 changed files with 246 additions and 6591 deletions

5
.gitignore vendored
View file

@ -1,6 +1 @@
build
target
initfs/bin
filesystem/bin
filesystem/ref
filesystem/sbin

129
.gitmodules vendored
View file

@ -1,123 +1,18 @@
[submodule "rust"]
path = rust
url = https://github.com/redox-os/rust.git
[submodule "ion"]
path = programs/ion
url = https://github.com/redox-os/ion.git
[submodule "programs/coreutils"]
path = programs/coreutils
url = https://github.com/redox-os/coreutils.git
[submodule "schemes/redoxfs"]
path = schemes/redoxfs
url = https://github.com/redox-os/redoxfs
[submodule "programs/extrautils"]
path = programs/extrautils
url = https://github.com/redox-os/extrautils.git
[submodule "programs/smith"]
path = programs/smith
url = https://github.com/IGI-111/Smith.git
[submodule "programs/userutils"]
path = programs/userutils
url = https://github.com/redox-os/userutils.git
[submodule "programs/netutils"]
path = programs/netutils
url = https://github.com/redox-os/netutils.git
[submodule "schemes/orbital"]
path = schemes/orbital
url = https://github.com/redox-os/orbital.git
[submodule "programs/orbutils"]
path = programs/orbutils
url = https://github.com/redox-os/orbutils.git
[submodule "filesystem/ui"]
path = filesystem/ui
url = https://github.com/redox-os/orbdata.git
[submodule "programs/acid"]
path = programs/acid
url = https://github.com/redox-os/acid.git
[submodule "programs/pkgutils"]
path = programs/pkgutils
url = https://github.com/redox-os/pkgutils.git
[submodule "installer"]
path = installer
url = https://github.com/redox-os/installer.git
[submodule "docgen"]
path = docgen
url = https://github.com/redox-os/docgen.git
[submodule "libc-artifacts"]
path = libc-artifacts
url = https://github.com/redox-os/libc-artifacts.git
[submodule "kernel"]
path = kernel
url = https://github.com/redox-os/kernel.git
[submodule "drivers"]
path = drivers
url = https://github.com/redox-os/drivers.git
[submodule "bootloader"]
path = bootloader
url = https://github.com/redox-os/bootloader.git
[submodule "isolinux"]
path = isolinux
url = https://github.com/redox-os/isolinux.git
[submodule "programs/init"]
path = programs/init
url = https://github.com/redox-os/init.git
[submodule "libs/orbclient"]
path = libs/orbclient
url = https://github.com/redox-os/orbclient.git
[submodule "libs/orbtk"]
path = libs/orbtk
url = https://github.com/redox-os/orbtk.git
[submodule "libs/orbimage"]
path = libs/orbimage
url = https://github.com/redox-os/orbimage.git
[submodule "libs/orbfont"]
path = libs/orbfont
url = https://github.com/redox-os/orbfont.git
[submodule "libs/jpeg-decoder"]
path = libs/jpeg-decoder
url = https://github.com/redox-os/jpeg-decoder.git
[submodule "libs/termion"]
path = libs/termion
url = https://github.com/redox-os/termion.git
[submodule "libs/syscall"]
path = libs/syscall
url = https://github.com/redox-os/syscall.git
[submodule "libs/extra"]
path = libs/extra
url = https://github.com/redox-os/libextra.git
[submodule "libs/event"]
path = libs/event
url = https://github.com/redox-os/event.git
[submodule "libs/pager"]
path = libs/pager
url = https://github.com/redox-os/libpager.git
[submodule "libs/ransid"]
path = libs/ransid
url = https://github.com/redox-os/ransid.git
[submodule "libs/same-file"]
path = libs/same-file
url = https://github.com/redox-os/same-file.git
[submodule "libs/mio"]
path = libs/mio
url = https://github.com/redox-os/mio.git
[submodule "programs/binutils"]
path = programs/binutils
url = https://github.com/redox-os/binutils.git
[submodule "programs/games"]
path = programs/games
url = https://github.com/redox-os/games.git
[submodule "programs/sodium"]
path = programs/sodium
url = https://github.com/redox-os/sodium.git
[submodule "libs/ralloc"]
path = libs/ralloc
url = https://github.com/redox-os/ralloc.git
[submodule "libs/tar"]
path = libs/tar
url = https://github.com/redox-os/tar-rs.git
[submodule "programs/orbterm"]
path = programs/orbterm
url = https://github.com/redox-os/orbterm.git
[submodule "cookbook"]
path = cookbook
url = https://github.com/redox-os/cookbook.git
[submodule "installer"]
path = installer
url = https://github.com/redox-os/installer.git
[submodule "isolinux"]
path = isolinux
url = https://github.com/redox-os/isolinux.git
[submodule "kernel"]
path = kernel
url = https://github.com/redox-os/kernel.git
[submodule "rust"]
path = rust
url = https://github.com/redox-os/rust.git

2365
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,74 +0,0 @@
[workspace]
exclude = ["cookbook"]
members = [
"docgen",
"drivers/ahcid",
"drivers/alxd",
"drivers/bgad",
"drivers/e1000d",
"drivers/nvmed",
"drivers/pcid",
"drivers/ps2d",
"drivers/rtl8168d",
"drivers/vboxd",
"drivers/vesad",
"drivers/xhcid",
"installer",
"kernel",
"libs/event",
"libs/extra",
"libs/jpeg-decoder",
"libs/mio",
"libs/orbclient",
"libs/orbfont",
"libs/orbimage",
"libs/orbtk",
"libs/pager",
#TODO "libs/ralloc",
"libs/ransid",
"libs/same-file",
"libs/syscall",
"libs/tar",
"libs/termion",
"programs/acid",
"programs/binutils",
"programs/contain",
"programs/coreutils",
"programs/extrautils",
"programs/games",
"programs/init",
"programs/ion",
"programs/netutils",
"programs/orbterm",
"programs/orbutils",
"programs/pkgutils",
"programs/smith",
"programs/sodium",
"programs/timeout",
"programs/userutils",
"schemes/ethernetd",
"schemes/ipd",
"schemes/orbital",
"schemes/ptyd",
"schemes/randd",
"schemes/redoxfs",
"schemes/tcpd",
"schemes/udpd"
]
[replace]
"extra:0.1.0" = { path = "libs/extra" }
"jpeg-decoder:0.1.12" = { path = "libs/jpeg-decoder" }
"mio:0.6.2" = { path = "libs/mio" }
"orbclient:0.3.4" = { path = "libs/orbclient" }
"orbfont:0.1.8" = { path = "libs/orbfont" }
"orbimage:0.1.15" = { path = "libs/orbimage" }
"orbtk:0.2.19" = { path = "libs/orbtk" }
"pager:0.1.0" = { path = "libs/pager" }
"ralloc:1.0.0" = { path = "libs/ralloc" }
"ransid:0.2.7" = { path = "libs/ransid" }
"redox_event:0.1.0" = { path = "libs/event" }
"redox_syscall:0.1.17" = { path = "libs/syscall" }
"same-file:0.1.2" = { path = "libs/same-file" }
"tar:0.4.11" = { path = "libs/tar" }
"termion:1.3.0" = { path = "libs/termion" }

View file

@ -8,12 +8,8 @@ live: build/livedisk.bin
iso: build/livedisk.iso
clean:
cargo clean
cargo clean --manifest-path rust/src/libcollections/Cargo.toml
cargo clean --manifest-path rust/src/libstd/Cargo.toml
cargo clean --manifest-path kernel/Cargo.toml
-$(FUMOUNT) build/filesystem/ || true
rm -rf initfs/bin
rm -rf filesystem/bin filesystem/sbin filesystem/ui/bin
rm -rf build
update:
@ -35,12 +31,6 @@ include mk/virtualbox.mk
# Kernel recipes
include mk/kernel.mk
# Userspace recipes
include mk/userspace/mod.mk
# Documentation
include mk/doc.mk
# Filesystem recipes
include mk/initfs.mk
include mk/filesystem.mk

@ -1 +1 @@
Subproject commit 5e5e080d618db036c632e096bdf6ce5c77b33bae
Subproject commit 787f0184fa96a227e51a7ce083a29b06f8945fd8

@ -1 +1 @@
Subproject commit 4a18e61514133017e31d67d31931b1bee621f0c2
Subproject commit 0506e3602e7e59de94a0e6c200d9aef82fe8e82c

1
docgen

@ -1 +0,0 @@
Subproject commit 52fb8863efdd0862b2439f87faff2457b43cac62

@ -1 +0,0 @@
Subproject commit 15675ea9c3de8b552743f83ec2f9a7bbba538c15

175
filesystem.toml Normal file
View file

@ -0,0 +1,175 @@
# This is the default configuration file
# General settings
[general]
# Do not prompt if settings are not defined
prompt = false
sysroot = "build/filesystem"
# Package settings
[packages]
acid = {}
binutils = {}
contain = {}
coreutils = {}
drivers = {}
extrautils = {}
games = {}
init = {}
installer = {}
ion = {}
lua = {}
netstack = {}
netutils = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils = {}
#pixelcannon = {}
pkgutils = {}
ptyd = {}
randd = {}
redoxfs = {}
smith = {}
#sodium = {}
userutils = {}
# User settings
[users.root]
# Password is set to "password"
password = "$argon2i$m=4096,t=10,p=1$Tnc4UVV0N00$ML9LIOujd3nmAfkAwEcSTMPqakWUF0OUiLWrIy0nGLk"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
randd
ptyd
pcid /etc/pcid.toml
"""
[[files]]
path = "/etc/init.d/10_net"
data = """
ethernetd
ipd
tcpd
udpd
dhcpd -b
"""
[[files]]
path = "/etc/init.d/20_orbital"
data = """
orbital display:3/activate /ui/bin/orblogin /ui/bin/launcher
"""
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2
getty debug: -J
"""
[[files]]
path = "/etc/net/dns"
data = "208.67.222.222"
[[files]]
path = "/etc/net/ip"
data = "10.0.2.15"
[[files]]
path = "/etc/net/ip_router"
data = "10.0.2.2"
[[files]]
path = "/etc/net/ip_subnet"
data = "255.255.255.0"
[[files]]
path = "/etc/net/mac"
data = "00.00.00.00.00.00"
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
[[files]]
path = "/etc/group"
data = "sudo;1;user"
[[files]]
path = "/etc/hostname"
data = "redox"
[[files]]
path = "/etc/issue"
data = """
########## Redox OS ##########
# Login with the following: #
# `user` #
# `root`:`password` #
##############################
"""
[[files]]
path = "/etc/motd"
data = """
Welcome to Redox OS!
"""
[[files]]
path = "/etc/pcid.toml"
data = """
[[drivers]]
name = "82543GC NIC"
class = 2
vendor = 32902
device = 4100
command = ["e1000d", "$NAME", "$BAR0", "$IRQ"]
[[drivers]]
name = "82540EM NIC"
class = 2
vendor = 32902
device = 4110
command = ["e1000d", "$NAME", "$BAR0", "$IRQ"]
[[drivers]]
name = "82545EM NIC"
class = 2
vendor = 32902
device = 4111
command = ["e1000d", "$NAME", "$BAR0", "$IRQ"]
[[drivers]]
name = "82579V NIC"
class = 2
vendor = 32902
device = 5379
command = ["e1000d", "$NAME", "$BAR0", "$IRQ"]
[[drivers]]
name = "RTL8168 NIC"
class = 2
vendor = 4332
device = 33128
command = ["rtl8168d", "$NAME", "$BAR2", "$IRQ"]
[[drivers]]
name = "XHCI"
class = 12
subclass = 3
interface = 48
command = ["xhcid", "$NAME", "$BAR0", "$IRQ"]
"""

View file

@ -1 +0,0 @@
sudo;1;user

View file

@ -1 +0,0 @@
redox

View file

@ -1,3 +0,0 @@
/sbin/randd
/sbin/ptyd
/sbin/pcid /etc/pcid.toml

View file

@ -1,5 +0,0 @@
/sbin/ethernetd
/sbin/ipd
/sbin/tcpd
/sbin/udpd
dhcpd -b

View file

@ -1 +0,0 @@
/sbin/orbital display:3/activate /ui/bin/orblogin /ui/bin/launcher

View file

@ -1,2 +0,0 @@
getty display:2
getty debug: -J

View file

@ -1,45 +0,0 @@
# This is the default configuration file
# General settings
[general]
# Do not prompt if settings are not defined
prompt = false
# Package settings
[packages]
coreutils = {}
extrautils = {}
ion = {}
netutils = {}
pkgutils = {}
tar = {}
userutils = {}
[[files]]
path = "/etc/net/dns"
data = "208.67.222.222"
[[files]]
path = "/etc/net/ip"
data = "10.0.2.15"
[[files]]
path = "/etc/net/ip_router"
data = "10.0.2.2"
[[files]]
path = "/etc/net/ip_subnet"
data = "255.255.255.0"
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
# User settings
[users.root]
# Password is set to "password"
password = "$argon2i$m=4096,t=10,p=1$Tnc4UVV0N00$ML9LIOujd3nmAfkAwEcSTMPqakWUF0OUiLWrIy0nGLk"
uid = 0
gid = 0
name = "root"
home = "/root"

View file

@ -1,6 +0,0 @@
########## Redox OS ##########
# Login with the following: #
# `user` #
# `root`:`password` #
##############################

View file

@ -1,2 +0,0 @@
Welcome to Redox OS!

View file

@ -1 +0,0 @@
208.67.222.222

View file

@ -1 +0,0 @@
10.0.2.15

View file

@ -1 +0,0 @@
10.0.2.2

View file

@ -1 +0,0 @@
255.255.255.0

View file

@ -1 +0,0 @@
00.00.00.00.00.00

View file

@ -1,2 +0,0 @@
root;$argon2i$m=4096,t=10,p=1$Tnc4UVV0N00$ML9LIOujd3nmAfkAwEcSTMPqakWUF0OUiLWrIy0nGLk;0;0;root;/root;/bin/ion
user;;1000;1000;user;/home/user;/bin/ion

View file

@ -1,41 +0,0 @@
[[drivers]]
name = "82543GC NIC"
class = 2
vendor = 32902
device = 4100
command = ["/sbin/e1000d", "$NAME", "$BAR0", "$IRQ"]
[[drivers]]
name = "82540EM NIC"
class = 2
vendor = 32902
device = 4110
command = ["/sbin/e1000d", "$NAME", "$BAR0", "$IRQ"]
[[drivers]]
name = "82545EM NIC"
class = 2
vendor = 32902
device = 4111
command = ["/sbin/e1000d", "$NAME", "$BAR0", "$IRQ"]
[[drivers]]
name = "82579V NIC"
class = 2
vendor = 32902
device = 5379
command = ["/sbin/e1000d", "$NAME", "$BAR0", "$IRQ"]
[[drivers]]
name = "RTL8168 NIC"
class = 2
vendor = 4332
device = 33128
command = ["/sbin/rtl8168d", "$NAME", "$BAR2", "$IRQ"]
[[drivers]]
name = "XHCI"
class = 12
subclass = 3
interface = 48
command = ["/sbin/xhcid", "$NAME", "$BAR0", "$IRQ"]

View file

@ -1 +0,0 @@
https://static.redox-os.org/pkg

View file

@ -1 +0,0 @@
../../../LICENSE

View file

@ -1 +0,0 @@
../../../README.md

View file

@ -1 +0,0 @@
../../LICENSE

View file

@ -1 +0,0 @@
../../README.md

@ -1 +0,0 @@
Subproject commit d6a5749d61df72e8a339335be5429d843fa401b1

View file

@ -1,3 +1,34 @@
# This is the default configuration file
# General settings
[general]
# Do not prompt if settings are not defined
prompt = false
sysroot = "build/initfs"
# Package settings
[packages]
drivers = {}
init = {}
redoxfs = {}
[[files]]
path="/etc/init.rc"
data="""
export PATH initfs:/bin
vesad T T G
stdio display:1
ps2d
pcid /etc/pcid.toml
redoxfs disk:0 file
cd file:
export PATH file:/bin
run.d /etc/init.d
"""
[[files]]
path="/etc/pcid.toml"
data="""
[[drivers]]
name = "AHCI storage"
class = 1
@ -30,3 +61,4 @@ class = 8
vendor = 33006
device = 51966
command = ["vboxd", "$NAME", "$BAR0", "$BAR1", "$IRQ"]
"""

View file

@ -1,9 +0,0 @@
export PATH initfs:/bin
vesad T T G
stdio display:1
ps2d
pcid /etc/pcid.toml
redoxfs disk:0 file
cd file:
export PATH file:/bin
run.d /etc/init.d

@ -1 +1 @@
Subproject commit c2bae24835735df247e27093aa43bd1d0fe2a655
Subproject commit 318e7bb89f37228984bc92976ecdb28adb63dcf0

2
kernel

@ -1 +1 @@
Subproject commit b3a25bd3a39cd527b80d5ab2ea0da56a91e10540
Subproject commit 62d3f4bd93c425b263bd9b762632f4601e0ec1c5

View file

@ -1,21 +0,0 @@
#!/bin/bash
have_o=false
for arg in "$@"; do
if [[ "$arg" = "-o" ]]; then
have_o=true
break
fi
done
args=()
for arg in "$@"; do
if [[ $have_o = true && "$arg" =~ ^extra-filename= ]]; then
unset args[${#args[@]}-1]
elif [[ $have_o = true && "$arg" =~ ^--emit= ]]; then
args+=("--emit=link")
else
args+=("$arg")
fi
done
RUST_BACKTRACE=1 exec rustc -L build/kernel "${args[@]}"

View file

@ -1,2 +0,0 @@
#!/bin/bash
RUST_BACKTRACE=1 rustdoc -L build/kernel $*

@ -1 +0,0 @@
Subproject commit ecd2edd8935177cf9f160ae6ec11c22ee3a0a249

@ -1 +0,0 @@
Subproject commit 1333e640e1c58cf3808372147f34e91ff0d7f13c

@ -1 +0,0 @@
Subproject commit 402932084acd5fef4812945887ceaaa2ddd5f264

@ -1 +0,0 @@
Subproject commit 0660fc061973598515ec5d39d03a1bc7e53d68f6

@ -1 +0,0 @@
Subproject commit a4f7f6a4e106fa52702a2dc1c4b2bb747bd0bf9a

@ -1 +0,0 @@
Subproject commit 4a3153798bd8d22380f057c07f1e77f8bd9a3cec

@ -1 +0,0 @@
Subproject commit f554cec35c9614939590ec5d799d01a593d3c446

@ -1 +0,0 @@
Subproject commit cc3b593a585e339819cafcd8133b22cc6242f84d

@ -1 +0,0 @@
Subproject commit 9ff1aa42bdd7404585e5cf7f666e2a0f67c4e4be

@ -1 +0,0 @@
Subproject commit 62b01eba8299143a1a5a78b36d85ab63251462b3

@ -1 +0,0 @@
Subproject commit e31a743ec384bac8ecc0bdc82d63ae3534016416

@ -1 +0,0 @@
Subproject commit 20d2db307bc9926a33f437b688925ba3a37821c2

@ -1 +0,0 @@
Subproject commit d034b7f24b4a3eeb56baccbdcbfcdfce95940487

@ -1 +0,0 @@
Subproject commit 863080967dfee40e0a0c74936e43e79161e0aa6e

@ -1 +0,0 @@
Subproject commit 1ccf2baf1703bd30807c3f11a8a874ea53af6f74

@ -1 +0,0 @@
Subproject commit 550b9ea50a11c838533a0cf2cd9c8f7584927cdb

View file

@ -7,7 +7,6 @@ ifeq ($(UNAME),Darwin)
ECHO=/bin/echo
FUMOUNT=sudo umount
export LD=$(ARCH)-elf-ld
export LDFLAGS=--gc-sections
export NPROC=sysctl -n hw.ncpu
export STRIP=$(ARCH)-elf-strip
VB_AUDIO=coreaudio
@ -16,7 +15,6 @@ else
ECHO=echo
FUMOUNT=fusermount -u
export LD=ld
export LDFLAGS=--gc-sections
export NPROC=nproc
export STRIP=strip
VB_AUDIO="pulse"
@ -25,23 +23,14 @@ endif
# Automatic variables
ROOT=$(PWD)
export INITFS_FOLDER=$(ROOT)/build/initfs
export RUST_TARGET_PATH=$(ROOT)/kernel/targets
export CC=$(ROOT)/libc-artifacts/gcc.sh
export CFLAGS=-fno-stack-protector -U_FORTIFY_SOURCE
export XARGO_RUST_SRC=$(ROOT)/rust/src
# Kernel variables
KTARGET=$(ARCH)-unknown-none
KBUILD=build/kernel
KRUSTC=./krustc.sh
KRUSTDOC=./krustdoc.sh
KCARGO=RUSTC="$(KRUSTC)" RUSTDOC="$(KRUSTDOC)" CARGO_INCREMENTAL=1 cargo
KCARGOFLAGS=--target $(KTARGET) --release -- -C soft-float
# Userspace variables
export TARGET=$(ARCH)-unknown-redox
BUILD=build/userspace
export INITFS_FOLDER=$(ROOT)/initfs
RUSTC=$(PWD)/rustc.sh
RUSTDOC=./rustdoc.sh
CARGO=RUSTC="$(RUSTC)" RUSTDOC="$(RUSTDOC)" CARGO_INCREMENTAL=1 cargo
CARGOFLAGS=--target $(TARGET) --release -- -C codegen-units=`$(NPROC)`

View file

@ -1,7 +1,7 @@
build/harddrive.bin: $(KBUILD)/kernel bootloader/$(ARCH)/** build/filesystem.bin
build/harddrive.bin: build/kernel bootloader/$(ARCH)/** build/filesystem.bin
nasm -f bin -o $@ -D ARCH_$(ARCH) -ibootloader/$(ARCH)/ bootloader/$(ARCH)/harddrive.asm
build/livedisk.bin: $(KBUILD)/kernel_live bootloader/$(ARCH)/**
build/livedisk.bin: build/kernel_live bootloader/$(ARCH)/**
nasm -f bin -o $@ -D ARCH_$(ARCH) -ibootloader/$(ARCH)/ bootloader/$(ARCH)/livedisk.asm
build/%.bin.gz: build/%.bin

View file

@ -1,13 +0,0 @@
doc: $(KBUILD)/libkernel.a $(BUILD)/libstd.rlib FORCE
$(KCARGO) doc --target $(KTARGET) --manifest-path kernel/Cargo.toml
$(CARGO) doc --target $(TARGET) --manifest-path rust/src/libstd/Cargo.toml
ref: FORCE
rm -rf filesystem/ref/
mkdir -p filesystem/ref/
#cargo run --manifest-path docgen/Cargo.toml -- programs/binutils/src/bin/ filesystem/ref/
cargo run --manifest-path docgen/Cargo.toml -- programs/coreutils/src/bin/ filesystem/ref/
cargo run --manifest-path docgen/Cargo.toml -- programs/extrautils/src/bin/ filesystem/ref/
cargo run --manifest-path docgen/Cargo.toml -- programs/netutils/src/ filesystem/ref/
cargo run --manifest-path docgen/Cargo.toml -- programs/pkgutils/src/ filesystem/ref/
cargo run --manifest-path docgen/Cargo.toml -- programs/userutils/src/ filesystem/ref/

View file

@ -1,14 +1,14 @@
build/filesystem.bin: userspace
build/filesystem.bin: filesystem.toml
-$(FUMOUNT) build/filesystem/ || true
rm -rf $@ build/filesystem/
dd if=/dev/zero of=$@ bs=1048576 count=128
cargo run --manifest-path schemes/redoxfs/Cargo.toml --quiet --release --bin redoxfs-mkfs $@
cargo run --manifest-path installer/redoxfs/Cargo.toml --quiet --release --bin redoxfs-mkfs $@
mkdir -p build/filesystem/
cargo build --manifest-path schemes/redoxfs/Cargo.toml --quiet --release --bin redoxfs
cargo run --manifest-path schemes/redoxfs/Cargo.toml --quiet --release --bin redoxfs -- $@ build/filesystem/
cargo build --manifest-path installer/redoxfs/Cargo.toml --quiet --release --bin redoxfs
cargo run --manifest-path installer/redoxfs/Cargo.toml --quiet --release --bin redoxfs -- $@ build/filesystem/
sleep 2
pgrep redoxfs
cp -RL filesystem/* build/filesystem/
cargo run --manifest-path installer/Cargo.toml -- --cookbook=cookbook $<
chown -R 0:0 build/filesystem
chown -R 1000:1000 build/filesystem/home/user
chmod -R uog+rX build/filesystem
@ -30,8 +30,8 @@ build/filesystem.bin: userspace
mount: FORCE
mkdir -p build/filesystem/
cargo build --manifest-path schemes/redoxfs/Cargo.toml --quiet --release --bin redoxfs
cargo run --manifest-path schemes/redoxfs/Cargo.toml --quiet --release --bin redoxfs -- build/harddrive.bin build/filesystem/
cargo build --manifest-path installer/redoxfs/Cargo.toml --quiet --release --bin redoxfs
cargo run --manifest-path installer/redoxfs/Cargo.toml --quiet --release --bin redoxfs -- build/harddrive.bin build/filesystem/
sleep 2
pgrep redoxfs

View file

@ -1,17 +1,3 @@
$(KBUILD)/initfs.tag: initfs/bin/init \
initfs/bin/ahcid \
initfs/bin/bgad \
initfs/bin/nvmed \
initfs/bin/pcid \
initfs/bin/ps2d \
initfs/bin/redoxfs \
initfs/bin/vboxd \
initfs/bin/vesad \
initfs/etc/**
$(KCARGO) clean --manifest-path kernel/Cargo.toml
touch $@
initfs/bin/%: programs/%/Cargo.toml programs/%/src/** $(BUILD)/libstd.rlib
mkdir -p initfs/bin
$(CARGO) rustc --manifest-path $< $(CARGOFLAGS) -o $@
$(STRIP) $@
build/initfs.tag: initfs.toml
cargo run --manifest-path installer/Cargo.toml -- --cookbook=cookbook $<
touch $@

View file

@ -1,16 +1,11 @@
$(KBUILD)/libcollections.rlib: rust/src/libcollections/Cargo.toml rust/src/libcollections/**
mkdir -p $(KBUILD)
$(KCARGO) rustc --manifest-path $< $(KCARGOFLAGS) -o $@
cp rust/src/target/$(KTARGET)/release/deps/*.rlib $(KBUILD)
build/libkernel.a: kernel/Cargo.toml kernel/src/** build/initfs.tag
cd kernel && xargo rustc --lib --target $(KTARGET) --release -- -C soft-float --emit link=../$@
$(KBUILD)/libkernel.a: kernel/Cargo.toml kernel/src/** $(KBUILD)/libcollections.rlib $(KBUILD)/initfs.tag
$(KCARGO) rustc --manifest-path $< --lib $(KCARGOFLAGS) -o $@
build/libkernel_live.a: kernel/Cargo.toml kernel/src/** build/initfs.tag build/filesystem.bin
cd kernel && xargo rustc --lib --features live --target $(KTARGET) --release -- -C soft-float --emit link=../$@
$(KBUILD)/libkernel_live.a: kernel/Cargo.toml kernel/src/** $(KBUILD)/libcollections.rlib $(KBUILD)/initfs.tag build/filesystem.bin
$(KCARGO) rustc --manifest-path $< --lib --features live $(KCARGOFLAGS) -o $@
build/kernel: build/libkernel.a
$(LD) --gc-sections -z max-page-size=0x1000 -T kernel/linkers/$(ARCH).ld -o $@ $<
$(KBUILD)/kernel: $(KBUILD)/libkernel.a
$(LD) $(LDFLAGS) -z max-page-size=0x1000 -T kernel/linkers/$(ARCH).ld -o $@ $<
$(KBUILD)/kernel_live: $(KBUILD)/libkernel_live.a
$(LD) $(LDFLAGS) -z max-page-size=0x1000 -T kernel/linkers/$(ARCH).ld -o $@ $<
build/kernel_live: build/libkernel_live.a
$(LD) --gc-sections -z max-page-size=0x1000 -T kernel/linkers/$(ARCH).ld -o $@ $<

View file

@ -1,46 +0,0 @@
coreutils: \
filesystem/bin/basename \
filesystem/bin/cat \
filesystem/bin/chmod \
filesystem/bin/clear \
filesystem/bin/cp \
filesystem/bin/cut \
filesystem/bin/date \
filesystem/bin/dd \
filesystem/bin/df \
filesystem/bin/du \
filesystem/bin/echo \
filesystem/bin/env \
filesystem/bin/false \
filesystem/bin/free \
filesystem/bin/head \
filesystem/bin/kill \
filesystem/bin/ln \
filesystem/bin/ls \
filesystem/bin/mkdir \
filesystem/bin/mv \
filesystem/bin/printenv \
filesystem/bin/ps \
filesystem/bin/pwd \
filesystem/bin/realpath \
filesystem/bin/reset \
filesystem/bin/rmdir \
filesystem/bin/rm \
filesystem/bin/seq \
filesystem/bin/shutdown \
filesystem/bin/sleep \
filesystem/bin/sort \
filesystem/bin/tail \
filesystem/bin/tee \
filesystem/bin/test \
filesystem/bin/time \
filesystem/bin/touch \
filesystem/bin/true \
filesystem/bin/wc \
filesystem/bin/which \
filesystem/bin/yes
filesystem/bin/%: programs/coreutils/Cargo.toml programs/coreutils/src/bin/%.rs $(BUILD)/libstd.rlib
mkdir -p filesystem/bin
$(CARGO) rustc --manifest-path $< --bin $* $(CARGOFLAGS) -o $@
$(STRIP) $@

View file

@ -1,15 +0,0 @@
drivers: \
filesystem/sbin/pcid \
filesystem/sbin/e1000d \
filesystem/sbin/rtl8168d \
filesystem/sbin/xhcid
initfs/bin/%: drivers/%/Cargo.toml drivers/%/src/** $(BUILD)/libstd.rlib
mkdir -p initfs/bin
$(CARGO) rustc --manifest-path $< $(CARGOFLAGS) -o $@
$(STRIP) $@
filesystem/sbin/%: drivers/%/Cargo.toml drivers/%/src/** $(BUILD)/libstd.rlib
mkdir -p filesystem/sbin
$(CARGO) rustc --manifest-path $< $(CARGOFLAGS) -o $@
$(STRIP) $@

View file

@ -1,21 +0,0 @@
extrautils: \
filesystem/bin/calc \
filesystem/bin/cksum \
filesystem/bin/cur \
filesystem/bin/grep \
filesystem/bin/gunzip \
filesystem/bin/gzip \
filesystem/bin/less \
filesystem/bin/man \
filesystem/bin/mdless \
filesystem/bin/mtxt \
filesystem/bin/rem \
filesystem/bin/resize \
filesystem/bin/screenfetch \
filesystem/bin/tar
#filesystem/bin/dmesg filesystem/bin/info filesystem/bin/watch
filesystem/bin/%: programs/extrautils/Cargo.toml programs/extrautils/src/bin/%.rs $(BUILD)/libstd.rlib
mkdir -p filesystem/bin
$(CARGO) rustc --manifest-path $< --bin $* $(CARGOFLAGS) -o $@
$(STRIP) $@

View file

@ -1,7 +0,0 @@
installer: \
filesystem/bin/redox_installer
filesystem/bin/redox_installer: installer/Cargo.toml installer/src/** $(BUILD)/libstd.rlib
mkdir -p filesystem/bin
$(CARGO) rustc --manifest-path $< --bin redox_installer $(CARGOFLAGS) -o $@
$(STRIP) $@

View file

@ -1,11 +0,0 @@
ion: \
filesystem/bin/ion \
filesystem/bin/sh
filesystem/test/ion: programs/ion/Cargo.toml programs/ion/src/** $(BUILD)/libstd.rlib $(BUILD)/libtest.rlib
mkdir -p filesystem/test
$(CARGO) test --no-run --manifest-path $< $(CARGOFLAGS)
cp programs/ion/target/$(TARGET)/release/deps/ion-* $@
filesystem/bin/sh: filesystem/bin/ion
cp $< $@

View file

@ -1,49 +0,0 @@
userspace: \
drivers \
coreutils \
extrautils \
installer \
ion \
netutils \
orbutils \
pkgutils \
userutils \
schemes \
filesystem/bin/acid \
filesystem/bin/contain \
filesystem/bin/smith \
filesystem/bin/timeout \
filesystem/ui/bin/orbterm \
filesystem/ui/bin/sodium
include mk/userspace/coreutils.mk
include mk/userspace/drivers.mk
include mk/userspace/extrautils.mk
include mk/userspace/installer.mk
include mk/userspace/ion.mk
include mk/userspace/netutils.mk
include mk/userspace/orbutils.mk
include mk/userspace/pkgutils.mk
include mk/userspace/schemes.mk
include mk/userspace/userutils.mk
$(BUILD)/libstd.rlib: rust/src/libstd/Cargo.toml rust/src/libstd/**
mkdir -p $(BUILD)
$(CARGO) rustc --manifest-path $< --features "panic-unwind" $(CARGOFLAGS) -L native=libc-artifacts/usr/lib -o $@
cp rust/src/target/$(TARGET)/release/deps/*.rlib $(BUILD)
$(BUILD)/libtest.rlib: rust/src/libtest/Cargo.toml rust/src/libtest/** $(BUILD)/libstd.rlib
mkdir -p $(BUILD)
$(CARGO) rustc --manifest-path $< $(CARGOFLAGS) -L native=libc-artifacts/usr/lib -o $@
cp rust/src/target/$(TARGET)/release/deps/*.rlib $(BUILD)
filesystem/bin/%: programs/%/Cargo.toml programs/%/src/** $(BUILD)/libstd.rlib
mkdir -p filesystem/bin
$(CARGO) rustc --manifest-path $< --bin $* $(CARGOFLAGS) -o $@
$(STRIP) $@
filesystem/ui/bin/%: programs/%/Cargo.toml programs/%/src/**.rs $(BUILD)/libstd.rlib
mkdir -p filesystem/ui/bin
$(CARGO) rustc --manifest-path $< --bin $* $(CARGOFLAGS) -o $@
$(STRIP) $@

View file

@ -1,14 +0,0 @@
netutils: \
filesystem/bin/dhcpd \
filesystem/bin/dns \
filesystem/bin/httpd \
filesystem/bin/irc \
filesystem/bin/nc \
filesystem/bin/ntp \
filesystem/bin/telnetd \
filesystem/bin/wget
filesystem/bin/%: programs/netutils/Cargo.toml programs/netutils/src/%/**.rs $(BUILD)/libstd.rlib
mkdir -p filesystem/bin
$(CARGO) rustc --manifest-path $< --bin $* $(CARGOFLAGS) -o $@
$(STRIP) $@

View file

@ -1,15 +0,0 @@
orbutils: \
filesystem/ui/bin/browser \
filesystem/ui/bin/calculator \
filesystem/ui/bin/character_map \
filesystem/ui/bin/editor \
filesystem/ui/bin/file_manager \
filesystem/ui/bin/launcher \
filesystem/ui/bin/orblogin \
filesystem/ui/bin/orbterm \
filesystem/ui/bin/viewer
filesystem/ui/bin/%: programs/orbutils/Cargo.toml programs/orbutils/src/%/**.rs $(BUILD)/libstd.rlib
mkdir -p filesystem/ui/bin
$(CARGO) rustc --manifest-path $< --bin $* $(CARGOFLAGS) -o $@
$(STRIP) $@

View file

@ -1,7 +0,0 @@
pkgutils: \
filesystem/bin/pkg
filesystem/bin/%: programs/pkgutils/Cargo.toml programs/pkgutils/src/*.rs programs/pkgutils/src/bin/%.rs $(BUILD)/libstd.rlib
mkdir -p filesystem/bin
$(CARGO) rustc --manifest-path $< --bin $* $(CARGOFLAGS) -o $@
$(STRIP) $@

View file

@ -1,25 +0,0 @@
schemes: \
filesystem/sbin/ethernetd \
filesystem/sbin/ipd \
filesystem/sbin/orbital \
filesystem/sbin/ptyd \
filesystem/sbin/randd \
filesystem/sbin/redoxfs \
filesystem/sbin/redoxfs-mkfs \
filesystem/sbin/tcpd \
filesystem/sbin/udpd
initfs/bin/%: schemes/%/Cargo.toml schemes/%/src/** $(BUILD)/libstd.rlib
mkdir -p initfs/bin
$(CARGO) rustc --manifest-path $< --bin $* $(CARGOFLAGS) -o $@
$(STRIP) $@
filesystem/sbin/%: schemes/%/Cargo.toml schemes/%/src/** $(BUILD)/libstd.rlib
mkdir -p filesystem/sbin
$(CARGO) rustc --manifest-path $< --bin $* $(CARGOFLAGS) -o $@
$(STRIP) $@
filesystem/sbin/redoxfs-mkfs: schemes/redoxfs/Cargo.toml schemes/redoxfs/src/** $(BUILD)/libstd.rlib
mkdir -p filesystem/bin
$(CARGO) rustc --manifest-path $< --bin redoxfs-mkfs $(CARGOFLAGS) -o $@
$(STRIP) $@

View file

@ -1,13 +0,0 @@
userutils: \
filesystem/bin/getty \
filesystem/bin/id \
filesystem/bin/login \
filesystem/bin/passwd \
filesystem/bin/su \
filesystem/bin/sudo \
filesystem/bin/whoami
filesystem/bin/%: programs/userutils/Cargo.toml programs/userutils/src/bin/%.rs $(BUILD)/libstd.rlib
mkdir -p filesystem/bin
$(CARGO) rustc --manifest-path $< --bin $* $(CARGOFLAGS) -o $@
$(STRIP) $@

View file

@ -1,84 +0,0 @@
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath, amsfonts, amssymb, amsthm, url, lmodern, color, graphicx}
\title{Redox and system calls -- a multi-level kernel space}
\author{Redox OS developers}
\date{\today}
\begin{document}
\maketitle
%%% DISCLAIMER %%%
\begin{titlepage}
\centering \huge\bfseries The following document is an incomplete draft.
\end{titlepage}
%%% START OF DOCUMENT %%%
\maketitle
\begin{abstract}
In this paper, we review Redox's core system call interface. Redox has
multiple levels of kernel space, and the top one consists of a very
minimal system call interface, which we go over here.
\end{abstract}
\section{Introduction}
TODO
\section{Executing system calls}
We allow multiplied system calls, a generalized version of concept of
multicalls in the \emph{kqueue} system call.
Depending on the platform, system calls might be sent through interrupts or
\texttt{sysenter}. What we are really interested in, though, is the state
when we leave user space.
\begin{description}
\item [\texttt{rax}/\texttt{eax}] stores the pointer to the array of system calls.
\item [\texttt{rbx}/\texttt{ebx}] stores the number of system calls in
this bundle.
\end{description}
\section{The interface}
Each entry in this system call bundle buffer needs an ABI representation.
We represent the interface for the \emph{core system calls}.
The representation is as follows:
\begin{description}
\item [The system call ID] this is an unsigned 16-bit integer
representing which system call is used.
\item [First argument] this 64-bit integer is used as defined by the
system call.
\item [Second argument] this 64-bit integer is used as defined by the
system call.
\end{description}
The return value of the system call is placed in the respective element.
\subsection{Access management}
The memory access management is a set of system calls taken pointer and
size, respectively.
It contains of four calls:
\begin{description}
\item [Make memory readable].
\item [Make memory unreadable].
\item [Make memory writable].
\item [Make memory unwritable].
\item [Make memory executable].
\item [Make memory unexecutable].
\end{description}
\subsection{Access management}
%%% BIBLIOGRAPHY %%%
\begin{thebibliography}{9}
TODO
\end{thebibliography}
\end{document}

@ -1 +0,0 @@
Subproject commit 99b7633a0a8b23befecb3703f1b7c06603cf7ba4

@ -1 +0,0 @@
Subproject commit ce057bac70f18fe7fd004c68e58c07c1cc7174e0

View file

@ -1,6 +0,0 @@
[package]
name = "contain"
version = "0.1.0"
[dependencies]
redox_syscall = "0.1"

View file

@ -1,172 +0,0 @@
use syscall;
use syscall::data::{Stat, StatVfs};
use syscall::error::{Error, EBADF, EINVAL, EPERM, Result};
use syscall::scheme::Scheme;
use std::str;
use std::path::PathBuf;
pub struct ChrootScheme {
root: PathBuf
}
impl ChrootScheme {
pub fn new(root: PathBuf) -> ChrootScheme {
ChrootScheme {
root: root
}
}
fn translate(&self, path: &[u8]) -> Result<String> {
let path = str::from_utf8(path).or(Err(Error::new(EINVAL)))?;
let mut translated = self.root.clone();
translated.push(path.trim_left_matches('/'));
if translated.starts_with(&self.root) {
translated.into_os_string().into_string().or(Err(Error::new(EINVAL)))
} else {
println!("escaped chroot");
Err(Error::new(EPERM))
}
}
}
impl Scheme for ChrootScheme {
fn open(&self, path: &[u8], flags: usize, uid: u32, gid: u32) -> Result<usize> {
if uid != 0 {
syscall::setreuid(0, uid as usize)?;
}
if gid != 0 {
syscall::setregid(0, gid as usize)?;
}
let res = syscall::open(&self.translate(path)?, flags);
if uid != 0 {
syscall::setreuid(0, 0).unwrap();
}
if gid != 0 {
syscall::setregid(0, 0).unwrap();
}
res
}
fn chmod(&self, path: &[u8], mode: u16, uid: u32, gid: u32) -> Result<usize> {
if uid != 0 {
syscall::setreuid(0, uid as usize)?;
}
if gid != 0 {
syscall::setregid(0, gid as usize)?;
}
let res = syscall::chmod(&self.translate(path)?, mode as usize);
if uid != 0 {
syscall::setreuid(0, 0).unwrap();
}
if gid != 0 {
syscall::setregid(0, 0).unwrap();
}
res
}
fn rmdir(&self, path: &[u8], uid: u32, gid: u32) -> Result<usize> {
if uid != 0 {
syscall::setreuid(0, uid as usize)?;
}
if gid != 0 {
syscall::setregid(0, gid as usize)?;
}
let res = syscall::rmdir(&self.translate(path)?);
if uid != 0 {
syscall::setreuid(0, 0).unwrap();
}
if gid != 0 {
syscall::setregid(0, 0).unwrap();
}
res
}
fn unlink(&self, path: &[u8], uid: u32, gid: u32) -> Result<usize> {
if uid != 0 {
syscall::setreuid(0, uid as usize)?;
}
if gid != 0 {
syscall::setregid(0, gid as usize)?;
}
let res = syscall::unlink(&self.translate(path)?);
if uid != 0 {
syscall::setreuid(0, 0).unwrap();
}
if gid != 0 {
syscall::setregid(0, 0).unwrap();
}
res
}
/* Resource operations */
fn dup(&self, old_id: usize, buf: &[u8]) -> Result<usize> {
syscall::dup(old_id, buf)
}
fn read(&self, id: usize, buf: &mut [u8]) -> Result<usize> {
syscall::read(id, buf)
}
fn write(&self, id: usize, buf: &[u8]) -> Result<usize> {
syscall::write(id, buf)
}
fn seek(&self, id: usize, pos: usize, whence: usize) -> Result<usize> {
syscall::lseek(id, pos as isize, whence)
}
fn fcntl(&self, id: usize, cmd: usize, arg: usize) -> Result<usize> {
syscall::fcntl(id, cmd, arg)
}
fn fevent(&self, _id: usize, _flags: usize) -> Result<usize> {
//TODO
Err(Error::new(EBADF))
}
fn fmap(&self, _id: usize, _offset: usize, _size: usize) -> Result<usize> {
//TODO
Err(Error::new(EBADF))
}
fn fpath(&self, id: usize, buf: &mut [u8]) -> Result<usize> {
let count = syscall::fpath(id, buf)?;
let translated = {
let path = str::from_utf8(&buf[.. count]).or(Err(Error::new(EINVAL)))?;
let translated = path.to_string().replace(self.root.to_str().ok_or(Error::new(EINVAL))?, "");
format!("file:{}", translated.trim_left_matches('/'))
};
let path = translated.as_bytes();
let mut i = 0;
while i < buf.len() && i < path.len() {
buf[i] = path[i];
i += 1;
}
Ok(i)
}
fn fstat(&self, id: usize, stat: &mut Stat) -> Result<usize> {
syscall::fstat(id, stat)
}
fn fstatvfs(&self, id: usize, stat: &mut StatVfs) -> Result<usize> {
syscall::fstatvfs(id, stat)
}
fn fsync(&self, id: usize) -> Result<usize> {
syscall::fsync(id)
}
fn ftruncate(&self, id: usize, len: usize) -> Result<usize> {
syscall::ftruncate(id, len)
}
fn close(&self, id: usize) -> Result<usize> {
syscall::close(id)
}
}

View file

@ -1,97 +0,0 @@
extern crate syscall;
use syscall::scheme::Scheme;
use std::{env, fs,thread};
use std::io::{stderr, Write};
use std::os::unix::process::CommandExt;
use std::path::Path;
use std::process::{self, Command};
use self::chroot::ChrootScheme;
mod chroot;
fn usage() -> ! {
write!(stderr(), "contain root cmd args..\n").unwrap();
process::exit(1);
}
fn enter(root: &Path, cmd: &str, args: &[String]) {
let names = [
"pty",
"rand",
"tcp",
"udp"
];
let mut name_ptrs = Vec::new();
for name in names.iter() {
name_ptrs.push([name.as_ptr() as usize, name.len()]);
}
let new_ns = syscall::mkns(&name_ptrs).unwrap();
let root_canon = fs::canonicalize(root).unwrap();
let root_thread = thread::spawn(move || {
syscall::setrens(-1isize as usize, new_ns).unwrap();
let scheme_fd = syscall::open(":file", syscall::O_CREAT | syscall::O_RDWR | syscall::O_CLOEXEC).unwrap();
syscall::setrens(-1isize as usize, syscall::getns().unwrap()).unwrap();
let chroot_scheme = ChrootScheme::new(root_canon);
loop {
let mut packet = syscall::Packet::default();
if syscall::read(scheme_fd, &mut packet).unwrap() == 0 {
break;
}
chroot_scheme.handle(&mut packet);
syscall::write(scheme_fd, &packet).unwrap();
}
let _ = syscall::close(scheme_fd);
});
let pid = unsafe { syscall::clone(0).unwrap() };
if pid == 0 {
syscall::setrens(new_ns, new_ns).unwrap();
println!("Container {}: enter: {}", new_ns, cmd);
let mut command = Command::new(&cmd);
for arg in args {
command.arg(&arg);
}
command.current_dir("/");
let err = command.exec();
panic!("contain: failed to launch {}: {}", cmd, err);
} else {
let mut status = 0;
syscall::waitpid(pid, &mut status, 0).unwrap();
loop {
let mut c_status = 0;
let c_pid = syscall::waitpid(0, &mut c_status, syscall::WNOHANG).unwrap();
if c_pid == 0 {
break;
} else {
println!("Container zombie {}: {:X}", c_pid, c_status);
}
}
println!("Container {}: exit: {:X}", new_ns, status);
}
}
pub fn main() {
let mut args = env::args().skip(1);
if let Some(root) = args.next() {
let cmd = args.next().unwrap_or("login".to_string());
let args: Vec<String> = args.collect();
enter(Path::new(&root), &cmd, &args);
} else {
usage();
}
}

@ -1 +0,0 @@
Subproject commit bc953d8f25da20bd691b1855bc382cdd00a8603b

@ -1 +0,0 @@
Subproject commit 3f7d5027883169385086ea674be4127e7962e5b9

@ -1 +0,0 @@
Subproject commit c4984dc276bf5776f544b5f9f6996330e3ca4b51

@ -1 +0,0 @@
Subproject commit 032a45c55242aebaa9f6a03fa9d11da881bfcb1f

@ -1 +0,0 @@
Subproject commit ae73d27b07db96c6e6520c559ba03c117e048b43

@ -1 +0,0 @@
Subproject commit 074c900be31586f405cc46503a807e7ab8a7a2bb

@ -1 +0,0 @@
Subproject commit 4143dcf160648a048d579553ab29ba18fb47c23c

@ -1 +0,0 @@
Subproject commit 99c5e04e24084244b5d02b29ee95041b4d02bbf6

@ -1 +0,0 @@
Subproject commit b9c10c980e1724270b7e90d3c2d4999c398814b8

@ -1 +0,0 @@
Subproject commit 9e39ff178cf9abb5b09812b377082f3a5bb847b7

@ -1 +0,0 @@
Subproject commit 86fc766160cf2a0996f1ca6de6e301c35807f7fb

View file

@ -1,8 +0,0 @@
[package]
name = "timeout"
version = "0.1.0"
authors = ["Jeremy Soller <jackpot51@gmail.com>"]
[dependencies]
redox_event = { git = "https://github.com/redox-os/event.git" }
redox_syscall = "0.1"

View file

@ -1,44 +0,0 @@
extern crate event;
extern crate syscall;
use event::EventQueue;
use std::fs::File;
use std::io::{Result, Read, Write};
use std::mem;
use std::os::unix::io::AsRawFd;
use syscall::data::TimeSpec;
use syscall::flag::CLOCK_MONOTONIC;
fn main() {
let mut event_queue = EventQueue::<TimeSpec>::new().expect("timeout: failed to create event queue");
let path = format!("time:{}", CLOCK_MONOTONIC);
let mut file = File::open(&path).expect(&format!("timeout: failed to open {}", path));
let mut timeout = TimeSpec::default();
file.read(&mut timeout).unwrap();
println!("Current: {:?}", timeout);
timeout.tv_sec += 1;
println!("Setting timeout: {:?}", timeout);
file.write(&timeout).unwrap();
event_queue.add(file.as_raw_fd(), move |_count: usize| -> Result<Option<TimeSpec>> {
let mut time = TimeSpec::default();
if file.read(&mut time)? >= mem::size_of::<TimeSpec>() {
if time.tv_sec > timeout.tv_sec
|| (time.tv_sec == timeout.tv_sec && time.tv_nsec >= timeout.tv_nsec )
{
return Ok(Some(time))
}
}
Ok(None)
}).expect("timeout: failed to poll time");
event_queue.trigger_all(0).expect("timeout: failed to trigger events");
let time = event_queue.run().expect("timeout: failed to run event loop");
println!("Time passed: {:?}", time);
}

@ -1 +0,0 @@
Subproject commit 3ca18917f88130f4734bcb4643a410e62e6cb24c

Binary file not shown.

View file

@ -1,187 +0,0 @@
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
Bitstream Vera Fonts Copyright
------------------------------
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
a trademark of Bitstream, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of the fonts accompanying this license ("Fonts") and associated
documentation files (the "Font Software"), to reproduce and distribute the
Font Software, including without limitation the rights to use, copy, merge,
publish, distribute, and/or sell copies of the Font Software, and to permit
persons to whom the Font Software is furnished to do so, subject to the
following conditions:
The above copyright and trademark notices and this permission notice shall
be included in all copies of one or more of the Font Software typefaces.
The Font Software may be modified, altered, or added to, and in particular
the designs of glyphs or characters in the Fonts may be modified and
additional glyphs or characters may be added to the Fonts, only if the fonts
are renamed to names not containing either the words "Bitstream" or the word
"Vera".
This License becomes null and void to the extent applicable to Fonts or Font
Software that has been modified and is distributed under the "Bitstream
Vera" names.
The Font Software may be sold as part of a larger software package but no
copy of one or more of the Font Software typefaces may be sold by itself.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
FONT SOFTWARE.
Except as contained in this notice, the names of Gnome, the Gnome
Foundation, and Bitstream Inc., shall not be used in advertising or
otherwise to promote the sale, use or other dealings in this Font Software
without prior written authorization from the Gnome Foundation or Bitstream
Inc., respectively. For further information, contact: fonts at gnome dot
org.
Arev Fonts Copyright
------------------------------
Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining
a copy of the fonts accompanying this license ("Fonts") and
associated documentation files (the "Font Software"), to reproduce
and distribute the modifications to the Bitstream Vera Font Software,
including without limitation the rights to use, copy, merge, publish,
distribute, and/or sell copies of the Font Software, and to permit
persons to whom the Font Software is furnished to do so, subject to
the following conditions:
The above copyright and trademark notices and this permission notice
shall be included in all copies of one or more of the Font Software
typefaces.
The Font Software may be modified, altered, or added to, and in
particular the designs of glyphs or characters in the Fonts may be
modified and additional glyphs or characters may be added to the
Fonts, only if the fonts are renamed to names not containing either
the words "Tavmjong Bah" or the word "Arev".
This License becomes null and void to the extent applicable to Fonts
or Font Software that has been modified and is distributed under the
"Tavmjong Bah Arev" names.
The Font Software may be sold as part of a larger software package but
no copy of one or more of the Font Software typefaces may be sold by
itself.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
Except as contained in this notice, the name of Tavmjong Bah shall not
be used in advertising or otherwise to promote the sale, use or other
dealings in this Font Software without prior written authorization
from Tavmjong Bah. For further information, contact: tavmjong @ free
. fr.
TeX Gyre DJV Math
-----------------
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
Math extensions done by B. Jackowski, P. Strzelczyk and P. Pianowski
(on behalf of TeX users groups) are in public domain.
Letters imported from Euler Fraktur from AMSfonts are (c) American
Mathematical Society (see below).
Bitstream Vera Fonts Copyright
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera
is a trademark of Bitstream, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of the fonts accompanying this license (“Fonts”) and associated
documentation
files (the “Font Software”), to reproduce and distribute the Font Software,
including without limitation the rights to use, copy, merge, publish,
distribute,
and/or sell copies of the Font Software, and to permit persons to whom
the Font Software is furnished to do so, subject to the following
conditions:
The above copyright and trademark notices and this permission notice
shall be
included in all copies of one or more of the Font Software typefaces.
The Font Software may be modified, altered, or added to, and in particular
the designs of glyphs or characters in the Fonts may be modified and
additional
glyphs or characters may be added to the Fonts, only if the fonts are
renamed
to names not containing either the words “Bitstream” or the word “Vera”.
This License becomes null and void to the extent applicable to Fonts or
Font Software
that has been modified and is distributed under the “Bitstream Vera”
names.
The Font Software may be sold as part of a larger software package but
no copy
of one or more of the Font Software typefaces may be sold by itself.
THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
FOUNDATION
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL,
SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN
ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
INABILITY TO USE
THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
Except as contained in this notice, the names of GNOME, the GNOME
Foundation,
and Bitstream Inc., shall not be used in advertising or otherwise to promote
the sale, use or other dealings in this Font Software without prior written
authorization from the GNOME Foundation or Bitstream Inc., respectively.
For further information, contact: fonts at gnome dot org.
AMSFonts (v. 2.2) copyright
The PostScript Type 1 implementation of the AMSFonts produced by and
previously distributed by Blue Sky Research and Y&Y, Inc. are now freely
available for general use. This has been accomplished through the
cooperation
of a consortium of scientific publishers with Blue Sky Research and Y&Y.
Members of this consortium include:
Elsevier Science IBM Corporation Society for Industrial and Applied
Mathematics (SIAM) Springer-Verlag American Mathematical Society (AMS)
In order to assure the authenticity of these fonts, copyright will be
held by
the American Mathematical Society. This is not meant to restrict in any way
the legitimate use of the fonts, such as (but not limited to) electronic
distribution of documents containing these fonts, inclusion of these fonts
into other public domain or commercial font collections or computer
applications, use of the outline data to create derivative fonts and/or
faces, etc. However, the AMS does require that the AMS copyright notice be
removed from any derivative versions of the fonts which have been altered in
any way. In addition, to ensure the fidelity of TeX documents using Computer
Modern fonts, Professor Donald Knuth, creator of the Computer Modern faces,
has requested that any alterations which yield different font metrics be
given a different name.
$Id$

Binary file not shown.

Binary file not shown.

View file

@ -1,21 +0,0 @@
#!/bin/bash
have_o=false
for arg in "$@"; do
if [[ "$arg" = "-o" ]]; then
have_o=true
break
fi
done
args=()
for arg in "$@"; do
if [[ $have_o = true && "$arg" =~ ^extra-filename= ]]; then
unset args[${#args[@]}-1]
elif [[ $have_o = true && "$arg" =~ ^--emit= ]]; then
args+=("--emit=link")
else
args+=("$arg")
fi
done
RUST_BACKTRACE=1 exec rustc -L build/userspace "${args[@]}"

View file

@ -1,2 +0,0 @@
#!/bin/bash
RUST_BACKTRACE=1 rustdoc -L build/userspace $*

View file

@ -1,5 +0,0 @@
max_width = 200
ideal_width = 100
fn_call_width = 80
wrap_match_arms = false
write_mode = "Overwrite"

View file

@ -1,8 +0,0 @@
[package]
name = "ethernetd"
version = "0.1.0"
[dependencies]
netutils = { git = "https://github.com/redox-os/netutils.git" }
redox_event = { git = "https://github.com/redox-os/event.git" }
redox_syscall = "0.1"

Some files were not shown because too many files have changed in this diff Show more