libc: Replace assert() by __ensure()
This commit is contained in:
parent
4e5246080a
commit
cf8a0a5c34
|
@ -236,7 +236,7 @@ int pthread_once(pthread_once_t *once, void (*function) (void)) {
|
|||
return 0;
|
||||
}else{
|
||||
// a different thread is currently running the initializer.
|
||||
assert(expected == onceLocked);
|
||||
__ensure(expected == onceLocked);
|
||||
HEL_CHECK(helFutexWait((int *)&once->__mlibc_done, onceLocked));
|
||||
expected = __atomic_load_n(&once->__mlibc_done, __ATOMIC_ACQUIRE);
|
||||
}
|
||||
|
@ -302,10 +302,10 @@ int pthread_mutex_init(pthread_mutex_t *__restrict mutex,
|
|||
if(type == PTHREAD_MUTEX_RECURSIVE) {
|
||||
mutex->__mlibc_flags |= mutexRecursive;
|
||||
}else{
|
||||
assert(type == PTHREAD_MUTEX_NORMAL);
|
||||
__ensure(type == PTHREAD_MUTEX_NORMAL);
|
||||
}
|
||||
|
||||
assert(robust == PTHREAD_MUTEX_STALLED);
|
||||
__ensure(robust == PTHREAD_MUTEX_STALLED);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -326,7 +326,7 @@ int pthread_mutex_lock(pthread_mutex_t *mutex) {
|
|||
return 0;
|
||||
}else{
|
||||
if(mutex->__mlibc_flags & mutexRecursive)
|
||||
assert(!"TODO: Implement recursive mutexes");
|
||||
__ensure(!"TODO: Implement recursive mutexes");
|
||||
|
||||
// wait on the futex if the waiters flag is set.
|
||||
if(expected & waiters) {
|
||||
|
|
|
@ -29,14 +29,14 @@ struct Queue {
|
|||
}
|
||||
|
||||
void *dequeueSingle() {
|
||||
assert(_queue);
|
||||
__ensure(_queue);
|
||||
|
||||
auto e = __atomic_load_n(&_queue->kernelState, __ATOMIC_ACQUIRE);
|
||||
while(true) {
|
||||
assert(!(e & kHelQueueWantNext));
|
||||
__ensure(!(e & kHelQueueWantNext));
|
||||
|
||||
if(_progress != (e & kHelQueueTail)) {
|
||||
assert(_progress < (e & kHelQueueTail));
|
||||
__ensure(_progress < (e & kHelQueueTail));
|
||||
|
||||
auto ptr = (char *)_queue + sizeof(HelQueue) + _progress;
|
||||
auto elem = reinterpret_cast<HelElement *>(ptr);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
|
||||
|
@ -13,9 +14,9 @@
|
|||
|
||||
void __assert_fail(const char *assertion, const char *file, unsigned int line,
|
||||
const char *function) {
|
||||
frigg::panicLogger() << "In function " << function
|
||||
<< ", file " << file << ":" << line << "\n"
|
||||
<< "assert(" << assertion << ") failed" << frigg::endLog;
|
||||
fprintf(stderr, "In function %s, file %s:%d: Assertion '%s' failed!\n",
|
||||
function, file, line, assertion);
|
||||
abort();
|
||||
}
|
||||
|
||||
void __ensure_fail(const char *assertion, const char *file, unsigned int line,
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
HelHandle __mlibc_getPassthrough(int fd) {
|
||||
auto handle = cacheFileTable()[fd];
|
||||
assert(handle);
|
||||
__ensure(handle);
|
||||
return handle;
|
||||
}
|
||||
|
||||
|
@ -68,13 +68,13 @@ int access(const char *path, int mode) {
|
|||
errno = ENOENT;
|
||||
return -1;
|
||||
}else{
|
||||
assert(resp.error() == managarm::posix::Errors::SUCCESS);
|
||||
__ensure(resp.error() == managarm::posix::Errors::SUCCESS);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int stat(const char *__restrict path, struct stat *__restrict result) {
|
||||
assert(!"Fix this");
|
||||
__ensure(!"Fix this");
|
||||
int fd = open(path, O_RDONLY);
|
||||
if(fd == -1) {
|
||||
__ensure(errno == ENOENT);
|
||||
|
@ -90,7 +90,7 @@ int stat(const char *__restrict path, struct stat *__restrict result) {
|
|||
}
|
||||
|
||||
int fstat(int fd, struct stat *result) {
|
||||
assert(!"Fix this");
|
||||
__ensure(!"Fix this");
|
||||
/* managarm::posix::CntRequest<MemoryAllocator> request(getAllocator());
|
||||
request.set_request_type(managarm::posix::CntReqType::FSTAT);
|
||||
request.set_fd(fd);
|
||||
|
@ -175,7 +175,7 @@ int open(const char *path, int flags, ...) {
|
|||
errno = ENOENT;
|
||||
return -1;
|
||||
}else{
|
||||
assert(resp.error() == managarm::posix::Errors::SUCCESS);
|
||||
__ensure(resp.error() == managarm::posix::Errors::SUCCESS);
|
||||
return resp.fd();
|
||||
}
|
||||
}
|
||||
|
@ -187,7 +187,7 @@ ssize_t read(int fd, void *data, size_t max_size){
|
|||
globalQueue.trim();
|
||||
|
||||
auto handle = cacheFileTable()[fd];
|
||||
assert(handle);
|
||||
__ensure(handle);
|
||||
|
||||
managarm::fs::CntRequest<MemoryAllocator> req(getAllocator());
|
||||
req.set_req_type(managarm::fs::CntReqType::READ);
|
||||
|
@ -230,7 +230,7 @@ ssize_t read(int fd, void *data, size_t max_size){
|
|||
}else*/ if(resp.error() == managarm::fs::Errors::END_OF_FILE) {
|
||||
return 0;
|
||||
}
|
||||
assert(resp.error() == managarm::fs::Errors::SUCCESS);
|
||||
__ensure(resp.error() == managarm::fs::Errors::SUCCESS);
|
||||
return recv_data->length;
|
||||
}
|
||||
|
||||
|
@ -240,7 +240,7 @@ ssize_t write(int fd, const void *data, size_t size) {
|
|||
globalQueue.trim();
|
||||
|
||||
auto handle = cacheFileTable()[fd];
|
||||
assert(handle);
|
||||
__ensure(handle);
|
||||
|
||||
// frigg::infoLogger.log() << "write()" << frigg::EndLog();
|
||||
managarm::fs::CntRequest<MemoryAllocator> req(getAllocator());
|
||||
|
@ -277,7 +277,7 @@ ssize_t write(int fd, const void *data, size_t size) {
|
|||
|
||||
managarm::fs::SvrResponse<MemoryAllocator> resp(getAllocator());
|
||||
resp.ParseFromArray(recv_resp->data, recv_resp->length);
|
||||
assert(resp.error() == managarm::fs::Errors::SUCCESS);
|
||||
__ensure(resp.error() == managarm::fs::Errors::SUCCESS);
|
||||
|
||||
// TODO: implement NO_SUCH_FD
|
||||
/* if(resp.error() == managarm::fs::Errors::NO_SUCH_FD) {
|
||||
|
@ -293,12 +293,12 @@ ssize_t write(int fd, const void *data, size_t size) {
|
|||
}
|
||||
|
||||
off_t lseek(int fd, off_t offset, int whence) {
|
||||
assert(!"Fix this");
|
||||
__ensure(!"Fix this");
|
||||
/*HelAction actions[3];
|
||||
HelEvent results[3];
|
||||
|
||||
auto file_it = getFileMap().get(fd);
|
||||
assert(file_it);
|
||||
__ensure(file_it);
|
||||
|
||||
managarm::fs::CntRequest<MemoryAllocator> req(getAllocator());
|
||||
req.set_fd(fd);
|
||||
|
@ -356,7 +356,7 @@ HelHandle __raw_map(int fd) {
|
|||
globalQueue.trim();
|
||||
|
||||
auto handle = cacheFileTable()[fd];
|
||||
assert(handle);
|
||||
__ensure(handle);
|
||||
|
||||
managarm::fs::CntRequest<MemoryAllocator> req(getAllocator());
|
||||
req.set_req_type(managarm::fs::CntReqType::MMAP);
|
||||
|
@ -390,7 +390,7 @@ HelHandle __raw_map(int fd) {
|
|||
|
||||
managarm::fs::SvrResponse<MemoryAllocator> resp(getAllocator());
|
||||
resp.ParseFromArray(recv_resp->data, recv_resp->length);
|
||||
assert(resp.error() == managarm::fs::Errors::SUCCESS);
|
||||
__ensure(resp.error() == managarm::fs::Errors::SUCCESS);
|
||||
return pull_memory->handle;
|
||||
}
|
||||
|
||||
|
@ -477,7 +477,7 @@ int dup2(int src_fd, int dest_fd) {
|
|||
|
||||
managarm::posix::SvrResponse<MemoryAllocator> resp(getAllocator());
|
||||
resp.ParseFromArray(recv_resp->data, recv_resp->length);
|
||||
assert(resp.error() == managarm::posix::Errors::SUCCESS);
|
||||
__ensure(resp.error() == managarm::posix::Errors::SUCCESS);
|
||||
return dest_fd;
|
||||
}
|
||||
|
||||
|
@ -487,7 +487,7 @@ int fcntl(int, int, ...) {
|
|||
}
|
||||
|
||||
int isatty(int fd) {
|
||||
assert(!"Fix this");
|
||||
__ensure(!"Fix this");
|
||||
/* managarm::posix::CntRequest<MemoryAllocator> request(getAllocator());
|
||||
request.set_request_type(managarm::posix::CntReqType::TTY_NAME);
|
||||
request.set_fd(fd);
|
||||
|
@ -520,7 +520,7 @@ int isatty(int fd) {
|
|||
}
|
||||
|
||||
char *ttyname(int fd) {
|
||||
assert(!"Fix this");
|
||||
__ensure(!"Fix this");
|
||||
// TODO: this is not thread-safe.
|
||||
/* frigg::String<MemoryAllocator> cache(getAllocator());
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ gid_t getegid(void) {
|
|||
}
|
||||
|
||||
pid_t getpid(void) {
|
||||
assert(!"Fix this");
|
||||
__ensure(!"Fix this");
|
||||
/* managarm::posix::ClientRequest<MemoryAllocator> request(getAllocator());
|
||||
request.set_request_type(managarm::posix::ClientRequestType::GET_PID);
|
||||
|
||||
|
@ -75,7 +75,7 @@ pid_t getpid(void) {
|
|||
|
||||
managarm::posix::ServerResponse<MemoryAllocator> response(getAllocator());
|
||||
response.ParseFromArray(buffer, length);
|
||||
assert(response.error() == managarm::posix::Errors::SUCCESS);
|
||||
__ensure(response.error() == managarm::posix::Errors::SUCCESS);
|
||||
return response.pid();*/
|
||||
}
|
||||
pid_t getppid(void) {
|
||||
|
|
|
@ -26,7 +26,7 @@ MemoryAllocator &getAllocator() {
|
|||
// --------------------------------------------------------
|
||||
|
||||
uintptr_t VirtualAllocator::map(size_t length) {
|
||||
assert((length % 0x1000) == 0);
|
||||
__ensure((length % 0x1000) == 0);
|
||||
|
||||
HelHandle memory;
|
||||
void *actual_ptr;
|
||||
|
|
|
@ -45,7 +45,7 @@ int mount(const char *source, const char *target,
|
|||
|
||||
managarm::posix::SvrResponse<MemoryAllocator> resp(getAllocator());
|
||||
resp.ParseFromArray(recv_resp->data, recv_resp->length);
|
||||
assert(resp.error() == managarm::posix::Errors::SUCCESS);
|
||||
__ensure(resp.error() == managarm::posix::Errors::SUCCESS);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#include <posix.frigg_pb.hpp>
|
||||
|
||||
int connect(int fd, const struct sockaddr *address, socklen_t addr_length) {
|
||||
assert(!"Fix this");
|
||||
__ensure(!"Fix this");
|
||||
/* managarm::posix::ClientRequest<MemoryAllocator> request(getAllocator());
|
||||
request.set_request_type(managarm::posix::ClientRequestType::CONNECT);
|
||||
request.set_fd(fd);
|
||||
|
|
Loading…
Reference in a new issue