
only by entering the kernel, the tick counter will be updated => by using this feature, MetalSVM supports only LwIP's raw interface, because we have no guarantee that the tcpip thread will get computation time => no NETCONN & BSD socket support => no load balancing support
74 lines
2.4 KiB
C
74 lines
2.4 KiB
C
/*
|
|
* Copyright 2011 Carl-Benedikt Krueger, Chair for Operating Systems,
|
|
* RWTH Aachen University
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
* This file is part of MetalSVM.
|
|
*/
|
|
|
|
#ifndef __MMNIF_H__
|
|
#define __MMNIF_H__
|
|
|
|
#include <metalsvm/stddef.h>
|
|
#ifdef CONFIG_LWIP
|
|
#include <lwip/err.h>
|
|
#include <lwip/netif.h> /* lwip netif */
|
|
#include <lwip/sockets.h>
|
|
|
|
#define AF_MMNIF_NET 0x42
|
|
|
|
#define MMNIF_AUTOACTIVATE_FAST_SOCKETS LWIP_SOCKET
|
|
|
|
#if MMNIF_AUTOACTIVATE_FAST_SOCKETS
|
|
|
|
int mmnif_socket(int domain, int type, int protocol);
|
|
int mmnif_send(int s, void *data, size_t size, int flags);
|
|
int mmnif_recv(int s, void *data, uint32_t len, int flags);
|
|
int mmnif_accept(int s, struct sockaddr *addr, socklen_t * addrlen);
|
|
int mmnif_connect(int s, const struct sockaddr *name, socklen_t namelen);
|
|
int mmnif_listen(int s, int backlog);
|
|
int mmnif_bind(int s, const struct sockaddr *name, socklen_t namelen);
|
|
int mmnif_closesocket(int s);
|
|
int mmnif_getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen);
|
|
int mmnif_setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen);
|
|
|
|
#undef accept
|
|
#define accept(a,b,c) mmnif_accept(a,b,c)
|
|
#undef closesocket
|
|
#define closesocket(s) mmnif_closesocket(s)
|
|
#undef connect
|
|
#define connect(a,b,c) mmnif_connect(a,b,c)
|
|
#undef recv
|
|
#define recv(a,b,c,d) mmnif_recv(a,b,c,d)
|
|
#undef send
|
|
#define send(a,b,c,d) mmnif_send(a,b,c,d)
|
|
#undef socket
|
|
#define socket(a,b,c) mmnif_socket(a,b,c)
|
|
#undef bind
|
|
#define bind(a,b,c) mmnif_bind(a,b,c)
|
|
#undef listen
|
|
#define listen(a,b) mmnif_listen(a,b)
|
|
#undef setsockopt
|
|
#define setsockopt(a,b,c,d,e) mmnif_setsockopt(a,b,c,d,e)
|
|
#undef select
|
|
#endif
|
|
|
|
err_t mmnif_init(struct netif*);
|
|
err_t mmnif_shutdown(void);
|
|
int mmnif_worker(void *e);
|
|
void mmnif_print_driver_status(void);
|
|
|
|
#endif
|
|
|
|
#endif
|