Liav A
99ea80695e
Kernel: Use VirtualAddress & PhysicalAddress classes from LibBareMetal
2020-02-09 19:38:17 +01:00
Liav A
7c4dd0c8cf
LibELF: Use VirtualAddress class from LibBareMetal
2020-02-09 19:38:17 +01:00
Liav A
de3637d85f
LibBareMetal: Add Memory definitions
...
Add classes of VirtualAddress & PhysicalAddress.
2020-02-09 19:38:17 +01:00
Liav A
2a699cec98
LibC: Apply a change for the Bootstrapper environment
2020-02-09 19:38:17 +01:00
Liav A
1266c9ab88
Build Environment: Add a definition for the Bootstrapper environment
2020-02-09 19:38:17 +01:00
Liav A
8bdb08c354
AK: Apply changes for the Bootstrapper environment
2020-02-09 19:38:17 +01:00
Liav A
88cf46dc98
Userland: Use IO helpers from LibBareMetal
2020-02-09 19:38:17 +01:00
Liav A
e559af2008
Kernel: Apply changes to use LibBareMetal definitions
2020-02-09 19:38:17 +01:00
Liav A
7c507c27bf
LibBareMetal: Creating a new library for freestanding environments
2020-02-09 19:38:17 +01:00
Andreas Kling
c45a5ff840
WebServer: Add missing space to HTTP error responses
...
Fixes #1200 .
2020-02-09 17:05:29 +01:00
Andreas Kling
db2ede9427
Net: Short-circuit routing to the IPv4 address of a local adapter
...
This makes it possible to open http://localhost:8000/ in Browser. :^)
2020-02-09 14:15:55 +01:00
Andreas Kling
80703ef7d9
WebServer: Send the HTTP response headers in a single packet
...
This makes it easier to observe the protocol in packet logs.
2020-02-09 14:15:55 +01:00
Andreas Kling
efb694ecad
WebServer: Tighten things up with pledge() and unveil()
2020-02-09 14:15:55 +01:00
Andreas Kling
6c752c15a2
WebServer: Implement a very basic HTTP server :^)
...
This server listens on port 8000 and serves HTML files from /www.
It's very simple and quite naive, but I think we can start here and
build our way to something pretty neat.
Work towards #792 .
2020-02-09 14:15:55 +01:00
Andreas Kling
271bc4b2f2
Net: When routing to loopback, use the loopback adapter's MAC address
...
Otherwise the routing decision gets interpreted as "host unreachable."
2020-02-09 14:15:55 +01:00
Andreas Kling
d8a30e2ad2
Net: Give the LoopbackAdapter a MAC address
...
Since the routing code currently interprets an all-zero MAC address as
an invalid next hop, let's give the loopback adapter an address.
2020-02-09 14:15:55 +01:00
Andreas Kling
67ccdbe384
LibCore: Add File::is_directory() helpers
2020-02-09 14:15:55 +01:00
Andreas Kling
80b1af2352
AK: Make StringBuilder::to_string() non-destructive
...
This was an artifact of an earlier design of StringBuilder where I had
attempted to preserve the same allocation from build to final String.
2020-02-09 14:15:55 +01:00
Andreas Kling
3a7e49fe07
LibCore: Allow constructing a Core::HttpRequest from a raw HTTP request
...
This patch adds a very simple HTTP request parser that can be useful
for implementing say.. a web server. :^)
2020-02-09 14:15:55 +01:00
Conrad Pankoff
a189285658
Kernel: Support reading/writing PATADiskDevices directly via /dev/hdX
2020-02-09 12:58:45 +01:00
Hüseyin ASLITÜRK
9b5e0b6247
WindowServer: Remove username from MenuManager.
...
Now, we have UserName applet.
2020-02-09 10:37:35 +01:00
asliturk
57edcb54c2
MenuApplets: Add UserName applet.
...
Move code from WindowServer.WSMenuManager to the applet.
2020-02-09 10:37:35 +01:00
Andreas Kling
fc85d17322
TelnetServer: Protect the Client object during drain_socket()
...
If parsing a command causes us to disconnect the client, we have to
defer deletion of the Client object until we're done with the socket.
2020-02-08 19:12:52 +01:00
Andreas Kling
deb154be61
Kernel: Send SIGPIPE to the current thread on write to a broken pipe
2020-02-08 19:12:06 +01:00
Andreas Kling
70c9a89707
IPv4: Put some TCP close handshake debug spam behind TCP_SOCKET_DEBUG
2020-02-08 16:04:58 +01:00
Andreas Kling
3891e6d739
IPv4: Sockets should say can_read() after reading is shut down
...
This allows clients to get their EOF after shutting down reading.
2020-02-08 16:04:31 +01:00
Andreas Kling
228a1e9099
IPv4: Basic implementation of TCP socket shutdown
...
We can now participate in the TCP connection closing handshake. :^)
This implementation is definitely not complete and needs to handle a
bunch of other cases. But it's a huge improvement over not being able
to close connections at all.
Note that we hold on to pending-close sockets indefinitely, until they
are moved into the Closed state. This should also have a timeout but
that's still a FIXME. :^)
Fixes #428 .
2020-02-08 16:04:27 +01:00
Andreas Kling
8325662186
more: Read keystrokes from stdout instead of trying to re-open it
...
If we're running more on a TTY that we don't have filesystem access to,
we can't rely on open(ttyname(STDOUT_FILENO)). Since all the stdio fd's
are opened read/write anyway, we can just read from stdout, even if it
feels a bit weird. :^)
2020-02-08 15:50:00 +01:00
Andreas Kling
1037a1d2ba
IPv4: Don't ACK empty TCP packets
...
Wireshark was complaining about duplicate ACK's and this was why.
2020-02-08 14:09:02 +01:00
Andreas Kling
48f13f2a81
IPv4: Split IPv4Socket::recvfrom() into packet/byte buffered functions
...
This code was really hard to follow since it handles two separate modes
of buffering the data.
2020-02-08 13:09:37 +01:00
Andreas Kling
00d8ec3ead
Kernel: The inode fault handler should grab the VMObject lock earlier
...
It doesn't look healthy to create raw references into an array before
a temporary unlock. In fact, that temporary unlock looks generally
unhealthy, but it's a different problem.
2020-02-08 12:55:21 +01:00
Andreas Kling
a9d7902bb7
x86: Simplify region unmapping a bit
...
Add PageTableEntry::clear() to zero out a whole PTE, and use that for
unmapping instead of clearing individual fields.
2020-02-08 12:49:38 +01:00
Andreas Kling
3b95d61b22
LibGfx: Naive RGB/HSV conversion
2020-02-08 12:30:12 +01:00
Andreas Kling
7291370478
Kernel: Make File::truncate() take a u64
...
No point in taking a signed type here. We validate at the syscall layer
and then pass around a u64 from then on.
2020-02-08 12:07:04 +01:00
Andreas Kling
42d41fdf94
Kernel: Simplify FS::create_inode() a little bit
...
Return a KResultOr<NonnullRefPtr<Inode>> instead of returning errors in
an out-parameter.
2020-02-08 11:58:28 +01:00
Andreas Kling
2f82d4fb31
Kernel: Add KResultOr<T>::result()
...
This is just a handy way to get either an error or a KSuccess, even if
there is a T present.
2020-02-08 11:57:53 +01:00
Andreas Kling
745ea2a0ef
AK: Add JsonObjectSerializer::add(key, bool) overload
...
Without this, bools will get implicitly converted to integers, which is
usually not what we want.
2020-02-08 02:48:27 +01:00
Andreas Kling
f91b3aab47
Kernel: Cloned shared regions should also be marked as shared
2020-02-08 02:39:46 +01:00
Andreas Kling
8731682d0e
Kernel: Simplify FS::create_directory() a little bit
...
None of the clients of this function actually used the returned Inode,
so it can simply return a KResult instead.
2020-02-08 02:34:22 +01:00
Andreas Kling
cb97ef5589
Ext2FS: Fail with EMFILE if we would overflow i_links_count
2020-02-08 02:26:33 +01:00
Andreas Kling
88ea152b24
Kernel: Merge unnecessary DiskDevice class into BlockDevice
2020-02-08 02:20:03 +01:00
Andreas Kling
6be880bd10
IPv4: Send TCP packets right away instead of waiting to "retry"
...
Also be more explicit about zero-initializing OutgoingPacket objects.
2020-02-08 01:45:45 +01:00
Andreas Kling
a7e72f78cd
AK: Make PrintfImplementation treat %lld as 64-bit
2020-02-08 01:43:05 +01:00
Andreas Kling
28a5e33134
AK: Add LogStream overloads for long and long long
2020-02-08 01:41:43 +01:00
Andreas Kling
0c12d9a618
IPv4: Drop incoming packets on sockets that are shut down for reading
2020-02-08 00:58:11 +01:00
Andreas Kling
2b0b7cc5a4
Net: Add a basic sys$shutdown() implementation
...
Calling shutdown prevents further reads and/or writes on a socket.
We should do a few more things based on the type of socket, but this
initial implementation just puts the basic mechanism in place.
Work towards #428 .
2020-02-08 00:54:43 +01:00
Andreas Kling
a3f39fe789
Net: Make NetworkAdapter reference-counted
...
The idea behind WeakPtr<NetworkAdapter> was to support hot-pluggable
network adapters, but on closer thought, that's super impractical so
let's not go down that road.
2020-02-08 00:19:46 +01:00
Andreas Kling
f3a5985bb2
Kernel: Remove two bad FIXME's
...
We should absolutely *not* create a new thread in sys$exec().
There's also no sys$spawn() anymore.
2020-02-08 00:06:15 +01:00
Andreas Kling
71ca7ba31f
Kernel: Fix three broken format strings in Socket::{get,set}sockopt()
...
These had more %'s than actual arguments, oops!
2020-02-07 23:49:15 +01:00
Andreas Kling
d04fcccc90
Kernel: Truncate addresses stored by getsockname() and getpeername()
...
If there's not enough space in the output buffer for the whole sockaddr
we now simply truncate the address instead of returning EINVAL.
This patch also makes getpeername() actually return the peer address
rather than the local address.. :^)
2020-02-07 23:43:32 +01:00