summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-11-16LibC: Added some missing directory type constantsBrandon Scott
Added some missing directory type constants to dirent.h
2019-11-16LibC: Added additional fields to lconv structBrandon Scott
Added some additional fields to the lconv structure that were missing and set all their defaults.
2019-11-16Build: Make sure we look in Libraries/LibPthread for libraries :^)Andreas Kling
2019-11-16LibPthread: Implement a basic first pthread mutexAndreas Kling
This patch adds these API's: - pthread_mutex_init() - pthread_mutex_lock() - pthread_mutex_unlock() No mutex attributes are supported yet, so we only do the simplest mutex wihout recursive locking.
2019-11-16Kernel: Release the big process lock while yielding in sys$yield()Andreas Kling
Otherwise, a thread calling sched_yield() will prevent other threads in that process from entering the kernel.
2019-11-16AK: Atomic.h needs <stddef.h> for ptrdiff_tAndreas Kling
2019-11-15Terminal: Add selecting whole line on triple clickRok Povsic
The line is also added to clipboard
2019-11-15Meta: Add .DS_Store to .gitignore (#786)Doc O
2019-11-15HackStudio: Mark whitespace tokens as skippable GTextDocumentSpansAndreas Kling
This makes Ctrl+Left/Right jump over whitespace, which feels nice :^)
2019-11-15GTextEditor: Allow GTextDocumentSpans to be "skippable"Andreas Kling
Setting the is_skippable flag on a GTextDocumentSpan will now cause the cursor to skip over that span when moving with Ctrl+Left/Right.
2019-11-15GTextEditor: Allow moving the cursor span-wise with Ctrl+Left/RightAndreas Kling
This allows you to move token by token when using HackStudio to edit a C++ file. Fixes #767.
2019-11-15GTextEditor: Alt+Shift+S alphabetically sorts selected linesctfloyd
2019-11-15AK: Fix leak in WeakPtr(WeakPtr&&) and WeakPtr::operator=(WeakPtr&&)Andreas Kling
We were forgetting to adopt the WeakLink, causing a reference leak. This ended up costing us one allocation per exec(), with this stack: kmalloc_impl() Inode::set_vmo() InodeVMObject::create_with_inode() Process::do_exec() Process::exec() Process::sys$execve() This was a pain to track down, in the end I caught it by dumping out every live kmalloc pointer between runs and diffing the sets. Then it was just a matter of matching the pointer to a call stack and looking at what went wrong. :^)
2019-11-15Kernel: Unbreak SlabAllocator after startup-time constructorsAndreas Kling
Now that the kernel supports startup-time constructors, we were first doing slab_alloc_init(), and then the constructors ran later on, zeroing out the freelist pointers. This meant that all slab allocators thought they were completelty exhausted and forwarded all requests to kmalloc() instead.
2019-11-15Ports: Add openssl packageMWGuy
2019-11-14Kernel: Move Thread::m_joinee_exit_value into the JoinBlockerAndreas Kling
There's no need for this to be a permanent Thread member. Just use a reference in the JoinBlocker instead.
2019-11-14Kernel+LibPthread: Implement pthread_join()Andreas Kling
It's now possible to block until another thread in the same process has exited. We can also retrieve its exit value, which is whatever value it passed to pthread_exit(). :^)
2019-11-14HackStudio: Add a Stop action to kill the current processSergey Bugaev
Also give the Run action a different icon that has the same style as the stop icon that's now alongside it. Closes https://github.com/SerenityOS/serenity/issues/771
2019-11-14HackStudio: Do not spawn an intermediary shellSergey Bugaev
The Shell also puts each command into its own process group, which interferes with us trying to do the same here. We don't really need the shell here anyway, but it means we'll have to do command splitting ourselves.
2019-11-14HackStudio: Add TerminalWrapper::kill_running_command()Sergey Bugaev
Also put our child process into a new process group in order to be able to kill it along with its own children.
2019-11-14HackStudio: Add TerminalWrapper::on_command_exitSergey Bugaev
2019-11-14Kernel: Implement the killpg() syscallSergey Bugaev
2019-11-14Kernel: Unwind kernel stacks before dyingSergey Bugaev
While executing in the kernel, a thread can acquire various resources that need cleanup, such as locks and references to RefCounted objects. This cleanup normally happens on the exit path, such as in destructors for various RAII guards. But we weren't calling those exit paths when killing threads that have been executing in the kernel, such as threads blocked on reading or sleeping, thus causing leaks. This commit changes how killing threads works. Now, instead of killing a thread directly, one is supposed to call thread->set_should_die(), which will unblock it and make it unwind the stack if it is blocked in the kernel. Then, just before returning to the userspace, the thread will automatically die.
2019-11-14LibC: open/openat: Make sure path is not a nullptr before dereferencingTill Mayer
open and openat both try to get the length of the path string. When the path was a nullptr, strlen tried to dereference it, causing a segfault.
2019-11-13run: Unbreak this script when running with a regular Bourne /bin/shAndreas Kling
We can't use bashisms in our scripts anymore, since we're trying to keep them POSIXy (to make them easier to run for our own shell someday)
2019-11-13LibPthread: Start working on a POSIX threading libraryAndreas Kling
This patch adds pthread_create() and pthread_exit(), which currently simply wrap our existing create_thread() and exit_thread() syscalls. LibThread is also ported to using LibPthread.
2019-11-13Kernel: Add a kernel boot parameter to force PIO modesupercomputer7
Also added an option in the run script to force PIO operation mode with the IDE controller. In addition, we're no longer limited to PIIX3 and PIIX4 chipsets for DMA
2019-11-13Ports: Add support for zip files and ensure configure is executable (#773)Dan MacDonald
2019-11-13Terminal+HackStudio: Fix leaking PTM fd to child processesSergey Bugaev
The pseudoterminal *master* fd is not supposed to be inherited, so make sure to open it with O_CLOEXEC.
2019-11-13WindowServer: Fix leaking framebuffer fd to clientsSergey Bugaev
Now that the WindowServer's menu is the primary way to start apps, it is especially noticable that it leaks the /dev/fb0 fd to the apps that it spawns. Fix that by opening it with O_CLOEXEC.
2019-11-13Kernel: Fix failing in can_read()/can_write()Sergey Bugaev
Now that the SystemMonitor queries which open files can be read and written to, having can_read()/can_write() unconditionally call ASSERT_NOT_REACHED() leads to system crashes when inspecting the WindowServer. Instead, just return true from can_read()/can_write() (indicating that the read()/write() syscalls should not block) and return -EINVAL when trying to actually read from or write to these devices.
2019-11-12Base: Add Help.af :^)Andreas Kling
Whoops, I forgot to add an .af file for the Help app!
2019-11-12Katica10: Tweak the 'L' and 'Q' glyphsAndreas Kling
2019-11-12Ports: Add .gitignore for Ports (#766)Dominik Madarász
2019-11-12Build: Make sure PATH is passed properly (#765)Dominik Madarász
2019-11-12Ports: Fix ncurses portDan MacDonald
2019-11-11HackStudio: Reflect widget selections in the form widget tree viewAndreas Kling
You can now manipulate the widget selection either by clicking and dragging the widgets using the cursor tool, or by interacting with the form widget tree view. :^)
2019-11-11GTreeView: Make it possible to multi-select with the Ctrl modifierAndreas Kling
2019-11-11HackStudio: Show the edited form widget's widget tree in the tree viewAndreas Kling
This patch introduces a simple WidgetTreeModel that models the widget tree inside of a given root GWidget.
2019-11-11LibGUI: Add "Vector<GWidget*> GWidget::child_widgets()"Andreas Kling
This is quite inefficient since it constructs a new Vector each time.
2019-11-11GTreeView: Always repaint in response to did_update_model()Andreas Kling
This could definitely be more efficient, but this is more correct than doing nothing at all. :^)
2019-11-11Ports: Add initial Python 3.6 portEmanuel Sprung
This port is experimental and not all pythom modules are working. But this is an initial shot which can be further worked on, as SerenityOS gets more mature. :^) The main limitation is that locales, threading and time related functions are not working.
2019-11-11LibC, LibM: Add functions needed to compile python3Emanuel Sprung
2019-11-11Toolchain: Add QEMU build script and improve documentationEmanuel Sprung
Added a script to build QEMU from source as part of the Toolchain. The script content could be in BuildIt.sh but has been put in a seperate file to make the build optional. Added PATH=$PATH to sudo calls to hand over the Toolchain's PATH setup by UseIt.sh. This enabled the script's to use the QEMU contained in the SerenityOS toolchain. Deleted old documentation in Meta and replaced it by a new documentation in the Toolchain folder.
2019-11-11Toolchain: Fix indentation in BuildIt.sh (#761)Nicolas Van Bossuyt
2019-11-11Launcher: Remove the Launcher app, and all hacks in support of itAndreas Kling
The Launcher's functionality has been replaced by the app shortcuts in the system menu. There were various window management hacks to ensure that the launcher stayed below all other windows while also being movable, etc.
2019-11-11Base: Add .af files for Minesweeper, Snake and VisualBuilderAndreas Kling
2019-11-11WindowServer: Sort the system menu app categories alphabeticallyAndreas Kling
2019-11-11WindowServer: Don't send menu item activations for separatorsAndreas Kling
Separators can't have identifiers associated with them, so it's not possible to react meaningfully to their activation. Don't send messages about it to avoid confusing the clients.
2019-11-11WindowManager: Simplify menu bar open/close logicAndreas Kling
Let the global menu bar be either "open" or "closed". Clicking on one of the menus in the menu bar toggles the state. This ends up simpler and more intuitive than what we had before.