Skip to content

Commit

Permalink
Merge pull request #2255 from ghaerr/owcnet
Browse files Browse the repository at this point in the history
[owc libc] Add alarm, accept, bind, connect, socket system calls for OWC libc
  • Loading branch information
ghaerr authored Mar 6, 2025
2 parents b550024 + b8ad6ac commit 45f0093
Show file tree
Hide file tree
Showing 5 changed files with 107 additions and 0 deletions.
19 changes: 19 additions & 0 deletions libc/watcom/syscall/accept.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/****************************************************************************
*
* Description: ELKS accept() system call.
*
****************************************************************************/

#include <sys/socket.h>
#include "watcom/syselks.h"


int accept(int __sock, struct sockaddr * restrict __address,
socklen_t * restrict __address_len)
{
sys_setseg(__address);
sys_setseg(__address_len);
syscall_res res = sys_call3(SYS_accept, __sock, (unsigned)__address,
(unsigned)__address_len);
__syscall_return(int, res);
}
41 changes: 41 additions & 0 deletions libc/watcom/syscall/alarm.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/****************************************************************************
*
* Open Watcom Project
*
* Copyright (c) 2002-2019 The Open Watcom Contributors. All Rights Reserved.
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
* ========================================================================
*
* This file contains Original Code and/or Modifications of Original
* Code as defined in and that are subject to the Sybase Open Watcom
* Public License version 1.0 (the 'License'). You may not use this file
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
* provided with the Original Code and Modifications, and is also
* available at www.sybase.com/developer/opensource.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
* NON-INFRINGEMENT. Please see the License for the specific language
* governing rights and limitations under the License.
*
* ========================================================================
*
* Description: ELKS alarm() system call.
*
****************************************************************************/


#include <unistd.h>
#include "watcom/syselks.h"


unsigned int alarm( unsigned int __seconds )
{
syscall_res res = sys_call1( SYS_alarm, __seconds );
__syscall_return( unsigned, res );
}
16 changes: 16 additions & 0 deletions libc/watcom/syscall/bind.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/****************************************************************************
*
* Description: ELKS bind() system call.
*
****************************************************************************/

#include <sys/socket.h>
#include "watcom/syselks.h"


int bind(int __sock, const struct sockaddr *__address, socklen_t __address_len)
{
sys_setseg(__address);
syscall_res res = sys_call3(SYS_bind, __sock, (unsigned)__address, __address_len);
__syscall_return(int, res);
}
16 changes: 16 additions & 0 deletions libc/watcom/syscall/connect.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/****************************************************************************
*
* Description: ELKS connect() system call.
*
****************************************************************************/

#include <sys/socket.h>
#include "watcom/syselks.h"


int connect(int __sock, const struct sockaddr *__address, socklen_t __address_len)
{
sys_setseg(__address);
syscall_res res = sys_call3(SYS_connect, __sock, (unsigned)__address, __address_len);
__syscall_return(int, res);
}
15 changes: 15 additions & 0 deletions libc/watcom/syscall/socket.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/****************************************************************************
*
* Description: ELKS socket() system call.
*
****************************************************************************/

#include <sys/socket.h>
#include "watcom/syselks.h"


int socket(int __domain, int __type, int __protocol)
{
syscall_res res = sys_call3(SYS_socket, __domain, __type, __protocol);
__syscall_return(int, res);
}

0 comments on commit 45f0093

Please sign in to comment.