提交 09d6dd69 创建 作者: Nickolai Zeldovich's avatar Nickolai Zeldovich

more c++

上级 dee0d8b5
......@@ -34,7 +34,6 @@ extern char end[]; // first address after kernel loaded from ELF file
char *newend;
static int kinited __mpalign__;
extern void kminit();
static struct Mbmem *
memsearch(paddr pa)
......
......@@ -156,6 +156,7 @@ void kmfree(void*);
int kmalign(void **p, int align, u64 size);
void kmalignfree(void *);
void verifyfree(char *ptr, u64 nbytes);
void kminit(void);
// kbd.c
void kbdintr(void);
......
......@@ -2,6 +2,7 @@
// Allocate objects smaller than a page.
//
extern "C" {
#include "types.h"
#include "mmu.h"
#include "kernel.h"
......@@ -9,6 +10,7 @@
#include "kalloc.h"
#include "mtrace.h"
#include "cpu.h"
}
// allocate in power-of-two sizes up to 2^KMMAX
// must be < 12
......@@ -78,7 +80,7 @@ kmalloc(u64 nbytes)
if(h){
freelists[c].buckets[b] = h->next;
r = h + 1;
h->next = (void *) (long) b;
h->next = (header*) (long) b;
}
release(&freelists[c].lock);
......@@ -103,7 +105,7 @@ kmfree(void *ap)
if(b < 0 || b > KMMAX)
panic("kmfree bad bucket");
verifyfree(ap, (1<<b) - sizeof(struct header));
verifyfree((char*) ap, (1<<b) - sizeof(struct header));
if (ALLOC_MEMSET)
memset(ap, 3, (1<<b) - sizeof(struct header));
......
#ifdef LWIP
extern "C" {
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wattributes"
#include "lwip/tcp_impl.h"
......@@ -9,8 +10,10 @@
#include "lwip/sockets.h"
#include "netif/etharp.h"
#pragma GCC diagnostic pop
}
#endif
extern "C" {
#include "types.h"
#include "kernel.h"
#include "queue.h"
......@@ -23,6 +26,10 @@
#include "file.h"
#include "net.h"
err_t if_init(struct netif *netif);
void if_input(struct netif *netif, void *buf, u16 len);
}
void
netfree(void *va)
{
......@@ -67,8 +74,6 @@ int errno;
void
netrx(void *va, u16 len)
{
extern void if_input(struct netif *netif, void *buf, u16 len);
lwip_core_lock();
if_input(&nif, va, len);
lwip_core_unlock();
......@@ -115,8 +120,6 @@ static void
lwip_init(struct netif *nif, void *if_state,
u32 init_addr, u32 init_mask, u32 init_gw)
{
extern err_t if_init(struct netif *netif);
struct ip_addr ipaddr, netmask, gateway;
ipaddr.addr = init_addr;
netmask.addr = init_mask;
......@@ -135,7 +138,7 @@ lwip_init(struct netif *nif, void *if_state,
static void
tcpip_init_done(void *arg)
{
volatile long *tcpip_done = arg;
volatile long *tcpip_done = (volatile long*) arg;
*tcpip_done = 1;
}
......@@ -290,7 +293,7 @@ netbind(int sock, void *xaddr, int xaddrlen)
return -1;
lwip_core_lock();
r = lwip_bind(sock, addr, xaddrlen);
r = lwip_bind(sock, (const sockaddr*) addr, xaddrlen);
lwip_core_unlock();
kmfree(addr);
return r;
......@@ -310,7 +313,7 @@ netlisten(int sock, int backlog)
long
netaccept(int sock, void *xaddr, void *xaddrlen)
{
socklen_t *lenptr = xaddrlen;
socklen_t *lenptr = (socklen_t*) xaddrlen;
socklen_t len;
void *addr;
int ss;
......@@ -323,7 +326,7 @@ netaccept(int sock, void *xaddr, void *xaddrlen)
return -1;
lwip_core_lock();
ss = lwip_accept(sock, addr, &len);
ss = lwip_accept(sock, (sockaddr*) addr, &len);
lwip_core_unlock();
if (ss < 0) {
kmfree(addr);
......
......@@ -3,4 +3,8 @@
void netclose(int sock);
int netread(int, char *, int);
int netwrite(int, char *, int);
long netsocket(int, int, int);
long netbind(int, void *, int);
long netlisten(int, int);
long netaccept(int, void *, void *);
extern "C" {
#include "types.h"
#include "kernel.h"
#include "mmu.h"
......@@ -12,6 +13,7 @@
#include "vm.h"
#include "sched.h"
#include <stddef.h>
}
enum { sched_debug = 0 };
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论