mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 23:37:36 +00:00
LibC: Implement fflush(nullptr)
This caused all open file streams to be flushed. This commit also changes `FILE::create` to handle buffer allocation failure gracefully.
This commit is contained in:
parent
b4e864d02d
commit
6a6dbf5b0b
3 changed files with 72 additions and 5 deletions
35
Userland/Libraries/LibC/bits/mutex_locker.h
Normal file
35
Userland/Libraries/LibC/bits/mutex_locker.h
Normal file
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright (c) 2021, Daniel Bertalan <dani@danielbertalan.dev>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
// We don't want to bring LibThreading headers into LibC, so we use plain
|
||||
// pthread mutexes and this RAII guard.
|
||||
namespace LibC {
|
||||
|
||||
class [[nodiscard]] MutexLocker {
|
||||
public:
|
||||
explicit MutexLocker(pthread_mutex_t& mutex)
|
||||
: m_mutex(mutex)
|
||||
{
|
||||
lock();
|
||||
}
|
||||
|
||||
~MutexLocker()
|
||||
{
|
||||
unlock();
|
||||
}
|
||||
|
||||
void lock() { pthread_mutex_lock(&m_mutex); }
|
||||
void unlock() { pthread_mutex_unlock(&m_mutex); }
|
||||
|
||||
private:
|
||||
pthread_mutex_t& m_mutex;
|
||||
};
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue