[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
oskit-mach and the OSENV_NONBLOCKING flag
From: |
Daniel Wagner |
Subject: |
oskit-mach and the OSENV_NONBLOCKING flag |
Date: |
Tue, 21 Aug 2001 01:20:17 +0200 |
User-agent: |
Mutt/1.2.5i |
Hi,
After the tip from Igor not to mix two version of oskit I was able to
boot oskit-mach succesfully. But still accessing the network, e.g. using
ping, caused a total crash.
It is an assertion in oskit-mach/oskit/osenv_mem.c on line 199.
(gdb) b osenv_mem.c:199
Breakpoint 1 at 0x139f0a: file ../../oskit-mach/oskit/osenv_mem.c, line 199.
(gdb) l osenv_mem.c:199
194 Always go directly to physical memory. */
195 flags |= OSENV_VIRT_EQ_PHYS|OSENV_PHYS_WIRED|OSENV_PHYS_CONTIG;
196
197 if (in_oskit_interrupt)
198 /* The oskit documentation says an interrupt caller must set the
flag. */
199 assert (flags & OSENV_NONBLOCKING);
200
201 if ((oskit_addr_t) block < phys_mem_max)
202 {
203 /* We got physical memory directly from the lmm. */
(gdb) c
Continuing.
Welcome to GNUmach 1.2.91-OSKit!
Breakpoint 1, free_for_oskit (block=0x368f4e0, flags=15, size=168) at
../../oskit-mach/oskit/osenv_mem.c:199
199 assert (flags & OSENV_NONBLOCKING);
(gdb) bt
#0 free_for_oskit (block=0x368f4e0, flags=15, size=168) at
../../oskit-mach/oskit/osenv_mem.c:199
#1 0x13a62e in mem_free (o=0x26fc40, block=0x368f4e4, flags=15, size=0) at
../../oskit-mach/oskit/osenv_mem.c:545
#2 0x17f903 in OSKIT_LINUX_oskit_linux_mem_free (block=0x368f4e4, flags=15,
size=0)
at ../../../../oskit-20000202/linux/shared/s_kmem.c:52
#3 0x17f955 in OSKIT_LINUX_kfree (p=0x368f4e4) at
../../../../oskit-20000202/linux/shared/s_kmem.c:82
#4 0x179aa3 in FDEV_LINUX___kfree_skb (skb=0x368f4e4) at
../../../../oskit-20000202/linux/dev/net_glue.c:340
#5 0x179fbf in skbuff_io_release (io=0x368f524) at
../../../../oskit-20000202/linux/src/include/linux/skbuff.h:221
#6 0x179d14 in FDEV_LINUX_net_bh () at
../../../../oskit-20000202/linux/dev/net_glue.c:433
#7 0x16137f in FDEV_LINUX_do_bottom_half () at
../../../../oskit-20000202/linux/dev/softintr.c:78
#8 0x170f9d in linux_intr (data=0xa) at
../../../../oskit-20000202/linux/dev/irq.c:113
#9 0x13ad79 in irq_handler (iunit=10, old_ipl=0, ret_addr=0x1545e3,
regs=0x59e9f78) at ../../oskit-mach/oskit/osenv_irq.c:76
#10 0x154149 in interrupt ()
(gdb) f 3
#3 0x17f955 in OSKIT_LINUX_kfree (p=0x368f4e4) at
../../../../oskit-20000202/linux/shared/s_kmem.c:82
82 oskit_linux_mem_free((void *) p, KMALLOC_FLAGS, 0);
In OSKIT_LINUX_kfree the flag for oskit_linux_mem_free is set to
KMALLOC_FLAGS which is:
/* XXX are all these flags really necessary? */
#define KMALLOC_FLAGS (OSENV_AUTO_SIZE | OSENV_PHYS_WIRED | \
OSENV_VIRT_EQ_PHYS | OSENV_PHYS_CONTIG)
oskit_linux_mem_free just passes the flags to mem_free and mem_free does the
same. So the flag can never be set to OSENV_NONBLOCKING. And also I haven't
found the place in the oskit documentation, where it says that the
interrupt caller must set the flag, as it is mention in free_for_oskit.
I tested the kernel without the assertion and it worked fine as far as I can
say. I do not know what to do with it.
wagi
--
Daniel Wagner
email: wagi@gmx.ch
GnuPG: 1024D/DCDE890A (public key available on any keyserver)
- oskit-mach and the OSENV_NONBLOCKING flag,
Daniel Wagner <=