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