geekos-devel Mailing List for GeekOS (Page 9)
Status: Pre-Alpha
Brought to you by:
daveho
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(8) |
Dec
(2) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(13) |
Feb
(11) |
Mar
(11) |
Apr
|
May
(2) |
Jun
(2) |
Jul
|
Aug
(1) |
Sep
(4) |
Oct
(3) |
Nov
|
Dec
(2) |
2003 |
Jan
|
Feb
(10) |
Mar
(1) |
Apr
(8) |
May
(8) |
Jun
(4) |
Jul
(7) |
Aug
(6) |
Sep
(9) |
Oct
(10) |
Nov
(4) |
Dec
(7) |
2004 |
Jan
(9) |
Feb
(8) |
Mar
(12) |
Apr
(30) |
May
(45) |
Jun
(38) |
Jul
(31) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2005 |
Jan
|
Feb
(1) |
Mar
(2) |
Apr
(2) |
May
|
Jun
(4) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
(3) |
Dec
(1) |
2007 |
Jan
(1) |
Feb
(4) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
(2) |
Apr
(4) |
May
|
Jun
(1) |
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Vishal S. <vis...@ho...> - 2002-01-29 21:56:26
|
Hi, I need a calibrated delay of approx. 400ns for communicating with IDE drives. There are two possible options. Use timer interrupts: I can use them if they are not going to be used by any other components of the kernel. This also is not a good idea because we frequently need to wait for 400ns in IDE -drive communication. This will increase the number of interrupts. Probably couple of them each time u try to access a sector. Second is to use loop with NOP's in it and execute it to get approximately a 400nsecond delay. For eg. if NOP takes 4 clock cycles and my clock has 100ns duty cycle I can get 400ns delay by putting 4 NOP in my delay loop. This works fine if we assume all processors have 100ns clock duty cycle...but this not the case because different versions of Intel/AMD processors have different speeds. If you guys have any Ideas regarding this let me know?? I will try to look into Linux source reference how they handle such situations. I know Linux uses something called BogoMIPS. But I am not sure how it works. Let me know if you guys have some other amazing ideas to handle this situation Thanks, Vishal |
From: Vishal S. <vis...@ho...> - 2002-01-29 21:43:24
|
Hi, I need a calibrated delay of approx. 400ns for communicating with IDE drives. There are two possible options. 1. Use timer interrupts: I can use them if they are not going to be used by any other components of the kernel. This also is not a good idea because we frequently need to wait for 400ns in IDE -drive communication. This will increase the number of interrupts. Probably couple of them each time u try to access a sector. 2. Second is to use loop with NOP's in it and execute it to get approximately a 400nsecond delay. For eg. if NOP takes 4 clock cycles and my clock has 100ns duty cycle I can get 400ns delay by putting 4 NOP in my delay loop. This works fine if we assume all processors have 100ns clock duty cycle...but this not the case because different versions of Intel/AMD processors have different speeds. If you guys have any Ideas regarding this let me know?? I will try to look into Linux source reference how they handle such situations. I know Linux uses something called BogoMIPS. But I am not sure how it works. Let me know if you guys have some other amazing ideas to handle this situation Thanks, Vishal |
From: Parc <ne...@ri...> - 2002-01-29 18:38:02
|
On Tue, Jan 29, 2002 at 11:57:54AM -0500, David Hovemeyer wrote: > Hi Vishal, > > On Tue, Jan 29, 2002 at 04:41:19AM -0800, Vishal Soni wrote: > > Hi Dave, > > > > As ATA 1 standard specifies there are two modes of operation > > 1. CHS-Cylinder Head Sector > > 2. LBA-Logical Block Access (Drive is treated as logical array of > > 512byte blocks) > > > > Which of the following modes u are planning to use for Virtual Memory > > implementation?? > > > > This is necessary for me to make a C interface for the Kernel for > > access. > > I think LBA mode would be a lot nicer to deal with than CHS. > Maybe the driver could emulate LBA for drives/controllers that don't support > LBA, so that the kernel API for all block devices was LBA. > CHS will limit the size of HD you can use. It'll also slow down the driver as it has to do the translations. > I must admit I really don't know a lot about hard drives (or > operating systems :-), so I may not be aware of all of the issues. > > > We could possibly have a driver that would allow us to use LBA and CHS > > mode. I am not sure what modes drives operate in VM systems, ff you have > > some idea let me know. > > I don't think whether or not virtual memory is in use makes a > difference, unless you're using DMA (which I think needs physical > addresses). > This brings up an issue that I've been thinking about for a couple weeks now. The malloc currently in geekos doesn't really know about physical memory. The DMA code is going to need physical addresses to work. Not only that, but physical addresses also cannot cross segment boundries. > Just to double-check: you're working with the experimental > version of GeekOS? http://geekos.sourceforge.net/experimental.html > All new development will be on that version. > > > Write now I have modified the kernel boot up code to get some drive > > parameters from BIOS Hard Disk drive parameter table. This information > > is propagated to the Main() function. > > Good. Did you add new fields to the boot_info struct? > This is a good start, however, it's better to not use BIOS to talk to drives at all. BIOS is going to limit you to the first 1024 cylinders to read from, causing weird issues with large partitions. But then again, it's not ultra important at this point. > > I have most of the stuff for ATA-1 > > driver figured out. The interface C code I am planning to add to the > > kernel right now would have some basic functionality of > > 1. Initializing drives > > 2. Read sectors/blocks > > 3. Write sectors/blocks > > 4. Querying drive information > > 5. Seek > > > > and some other commands. > > > > I am not planning to use DMA or interrupts for this initial version of > > driver. So it will be strictly Programmed I/0 achieved by communicating > > at IN/OUT ports > I've been working on DMA, and I'll post when it's done. Once we geek the memory allocation stuff ready, it'll be a breeze. > This all sounds great! Let me know if you have any other questions. > Also, feel free to send email to the geekos-devel mailing list, > that way everyone working on geekos will know what you're doing. > > -Dave Also, I've got an updated patchset coming here shortly for the timer code. We now have an RTC, although it's useless until I write some syscalls for it... -neal > > _______________________________________________ > Geekos-devel mailing list > Gee...@li... > https://lists.sourceforge.net/lists/listinfo/geekos-devel > |
From: David H. <da...@cs...> - 2002-01-29 16:58:05
|
Hi Vishal, On Tue, Jan 29, 2002 at 04:41:19AM -0800, Vishal Soni wrote: > Hi Dave, > > As ATA 1 standard specifies there are two modes of operation > 1. CHS-Cylinder Head Sector > 2. LBA-Logical Block Access (Drive is treated as logical array of > 512byte blocks) > > Which of the following modes u are planning to use for Virtual Memory > implementation?? > > This is necessary for me to make a C interface for the Kernel for > access. I think LBA mode would be a lot nicer to deal with than CHS. Maybe the driver could emulate LBA for drives/controllers that don't support LBA, so that the kernel API for all block devices was LBA. I must admit I really don't know a lot about hard drives (or operating systems :-), so I may not be aware of all of the issues. > We could possibly have a driver that would allow us to use LBA and CHS > mode. I am not sure what modes drives operate in VM systems, ff you have > some idea let me know. I don't think whether or not virtual memory is in use makes a difference, unless you're using DMA (which I think needs physical addresses). Just to double-check: you're working with the experimental version of GeekOS? http://geekos.sourceforge.net/experimental.html All new development will be on that version. > Write now I have modified the kernel boot up code to get some drive > parameters from BIOS Hard Disk drive parameter table. This information > is propagated to the Main() function. Good. Did you add new fields to the boot_info struct? > I have most of the stuff for ATA-1 > driver figured out. The interface C code I am planning to add to the > kernel right now would have some basic functionality of > 1. Initializing drives > 2. Read sectors/blocks > 3. Write sectors/blocks > 4. Querying drive information > 5. Seek > > and some other commands. > > I am not planning to use DMA or interrupts for this initial version of > driver. So it will be strictly Programmed I/0 achieved by communicating > at IN/OUT ports This all sounds great! Let me know if you have any other questions. Also, feel free to send email to the geekos-devel mailing list, that way everyone working on geekos will know what you're doing. -Dave |
From: Parc <ne...@ri...> - 2002-01-17 19:33:28
|
01, the perils of bochs. Attached is the code to set the 8254 for a 100Hz clock, as well as a crude sleep(). Obey the notes in sleep or it'll bite you badly. A bochs note: If you don't have ips set correctly, this code will appear to be wrong. It's not. It sets the timer correctly. I've tested it on an old toshiba laptop and it indeed works. As a side note, my macro to figure the register setting for the timer is different than, well, every other macro I've been able to find. Can anybody possible explain this? It doesn't make any sense to me. Please, if it breaks anything, let me know. -parc On Tue, Jan 15, 2002 at 10:33:36AM -0600, Parc wrote: > On Mon, Jan 14, 2002 at 12:23:27PM -0500, David Hovemeyer wrote: > > I tried your patch, and it seems to work fine, although the messages > > print out more than once per second. > > That's what I've got here. Just wanted to make sure it wasn't something > else I've got in my other addons(ne2k and DMA). > > > > > I like the idea of being able to specify the rate of the timer > > interrupts. Maybe you could explain how this works in more detail? > > Sure. All I'm doing here is setting the 8254 to interrupt 100 times/s. > The 8254 has several timing modes. The one we care about it rategen, > which will count down from the number of ticks given to 0, fire off > IRQ 0, set its counter back to our setting, rinse, and repeat. For > some reason(most likely stupidity on my part), my stupid spinlock sleep > isn't working as planned. > For more info on the 8254, you can look at intel. Sorry, I don't have > the URL handy. > > parc > > > > > -Dave > > > > > > On Fri, Jan 11, 2002 at 11:15:02PM -0600, Parc wrote: > > > I've munged together a couple lines to set the timer to 10ms jiffies, > > > and added a sleep(). Could somebody try these out for me? For some > > > reason I don't get the correct timing occasionally. This patch should > > > cause the kernel to loop saying "tick" once a second. > > > > > > Thanks > > > > > > Index: drivers/timer.c > > > =================================================================== > > > RCS file: /cvsroot/geekos/drivers/timer.c,v > > > retrieving revision 1.2 > > > diff -c -r1.2 timer.c > > > *** drivers/timer.c 2001/12/24 15:35:57 1.2 > > > --- drivers/timer.c 2002/01/12 05:10:29 > > > *************** > > > *** 11,16 **** > > > --- 11,20 ---- > > > #include "sys/geekos/kthread.h" > > > #include "sys/geekos/timer.h" > > > > > > + #define TICKRATE 1193182 > > > + //#define FIND_RATE(hz) (((TICKRATE + hz) / 2) / hz) > > > + #define FIND_RATE(hz) (((TICKRATE + hz) / 2) / hz) > > > + > > > // global tick counter > > > volatile unsigned long g_numTicks; > > > > > > *************** > > > *** 56,61 **** > > > --- 60,72 ---- > > > > > > Print( "Initializing timer...\n" ); > > > > > > + //Set the tick rate to 10ms > > > + disable_interrupts(); > > > + out_byte(0x043, 0x34); > > > + out_byte(0x040, FIND_RATE(100) & 0xff); > > > + out_byte(0x040, FIND_RATE(100) >> 8); > > > + enable_interrupts(); > > > + > > > // Install an interrupt handler for the timer IRQ > > > install_irq( TIMER_IRQ, &timer_interrupt_handler ); > > > > > > *************** > > > *** 63,66 **** > > > --- 74,83 ---- > > > irqMask = get_irq_mask(); > > > irqMask &= ~(1 << TIMER_IRQ); > > > set_irq_mask( irqMask ); > > > + } > > > + > > > + void sleep(int time) { > > > + long start = g_numTicks + time +1; > > > + Print("Sleeping from %x to %x\n",g_numTicks,start); > > > + while((g_numTicks - start) > 0) ; //spin > > > } > > > Index: include/sys/geekos/timer.h > > > =================================================================== > > > RCS file: /cvsroot/geekos/include/sys/geekos/timer.h,v > > > retrieving revision 1.2 > > > diff -c -r1.2 timer.h > > > *** include/sys/geekos/timer.h 2001/12/24 15:35:57 1.2 > > > --- include/sys/geekos/timer.h 2002/01/12 05:10:29 > > > *************** > > > *** 13,17 **** > > > --- 13,18 ---- > > > extern volatile unsigned long g_numTicks; > > > > > > void init_timer( void ); > > > + void sleep( int time ); > > > > > > #endif // TIMER_H > > > Index: kern/main.c > > > =================================================================== > > > RCS file: /cvsroot/geekos/kern/main.c,v > > > retrieving revision 1.6 > > > diff -c -r1.6 main.c > > > *** kern/main.c 2001/12/24 15:35:57 1.6 > > > --- kern/main.c 2002/01/12 05:10:30 > > > *************** > > > *** 51,56 **** > > > --- 53,62 ---- > > > // Test Join() function > > > { > > > struct kernel_thread* child; > > > + for(; ;) { > > > + sleep(100); > > > + Print("tick.\n"); > > > + } > > > Print( "Starting child...\n" ); > > > child = start_kernel_thread( &test_join, 0, PRIORITY_NORMAL, FALSE ); > > > Join( child ); > > > > > > > > _______________________________________________ > Geekos-devel mailing list > Gee...@li... > https://lists.sourceforge.net/lists/listinfo/geekos-devel > |
From: Parc <ne...@ri...> - 2002-01-15 16:36:20
|
On Mon, Jan 14, 2002 at 12:23:27PM -0500, David Hovemeyer wrote: > I tried your patch, and it seems to work fine, although the messages > print out more than once per second. That's what I've got here. Just wanted to make sure it wasn't something else I've got in my other addons(ne2k and DMA). > > I like the idea of being able to specify the rate of the timer > interrupts. Maybe you could explain how this works in more detail? Sure. All I'm doing here is setting the 8254 to interrupt 100 times/s. The 8254 has several timing modes. The one we care about it rategen, which will count down from the number of ticks given to 0, fire off IRQ 0, set its counter back to our setting, rinse, and repeat. For some reason(most likely stupidity on my part), my stupid spinlock sleep isn't working as planned. For more info on the 8254, you can look at intel. Sorry, I don't have the URL handy. parc > > -Dave > > > On Fri, Jan 11, 2002 at 11:15:02PM -0600, Parc wrote: > > I've munged together a couple lines to set the timer to 10ms jiffies, > > and added a sleep(). Could somebody try these out for me? For some > > reason I don't get the correct timing occasionally. This patch should > > cause the kernel to loop saying "tick" once a second. > > > > Thanks > > > > Index: drivers/timer.c > > =================================================================== > > RCS file: /cvsroot/geekos/drivers/timer.c,v > > retrieving revision 1.2 > > diff -c -r1.2 timer.c > > *** drivers/timer.c 2001/12/24 15:35:57 1.2 > > --- drivers/timer.c 2002/01/12 05:10:29 > > *************** > > *** 11,16 **** > > --- 11,20 ---- > > #include "sys/geekos/kthread.h" > > #include "sys/geekos/timer.h" > > > > + #define TICKRATE 1193182 > > + //#define FIND_RATE(hz) (((TICKRATE + hz) / 2) / hz) > > + #define FIND_RATE(hz) (((TICKRATE + hz) / 2) / hz) > > + > > // global tick counter > > volatile unsigned long g_numTicks; > > > > *************** > > *** 56,61 **** > > --- 60,72 ---- > > > > Print( "Initializing timer...\n" ); > > > > + //Set the tick rate to 10ms > > + disable_interrupts(); > > + out_byte(0x043, 0x34); > > + out_byte(0x040, FIND_RATE(100) & 0xff); > > + out_byte(0x040, FIND_RATE(100) >> 8); > > + enable_interrupts(); > > + > > // Install an interrupt handler for the timer IRQ > > install_irq( TIMER_IRQ, &timer_interrupt_handler ); > > > > *************** > > *** 63,66 **** > > --- 74,83 ---- > > irqMask = get_irq_mask(); > > irqMask &= ~(1 << TIMER_IRQ); > > set_irq_mask( irqMask ); > > + } > > + > > + void sleep(int time) { > > + long start = g_numTicks + time +1; > > + Print("Sleeping from %x to %x\n",g_numTicks,start); > > + while((g_numTicks - start) > 0) ; //spin > > } > > Index: include/sys/geekos/timer.h > > =================================================================== > > RCS file: /cvsroot/geekos/include/sys/geekos/timer.h,v > > retrieving revision 1.2 > > diff -c -r1.2 timer.h > > *** include/sys/geekos/timer.h 2001/12/24 15:35:57 1.2 > > --- include/sys/geekos/timer.h 2002/01/12 05:10:29 > > *************** > > *** 13,17 **** > > --- 13,18 ---- > > extern volatile unsigned long g_numTicks; > > > > void init_timer( void ); > > + void sleep( int time ); > > > > #endif // TIMER_H > > Index: kern/main.c > > =================================================================== > > RCS file: /cvsroot/geekos/kern/main.c,v > > retrieving revision 1.6 > > diff -c -r1.6 main.c > > *** kern/main.c 2001/12/24 15:35:57 1.6 > > --- kern/main.c 2002/01/12 05:10:30 > > *************** > > *** 51,56 **** > > --- 53,62 ---- > > // Test Join() function > > { > > struct kernel_thread* child; > > + for(; ;) { > > + sleep(100); > > + Print("tick.\n"); > > + } > > Print( "Starting child...\n" ); > > child = start_kernel_thread( &test_join, 0, PRIORITY_NORMAL, FALSE ); > > Join( child ); > > > |
From: David H. <da...@cs...> - 2002-01-14 17:23:33
|
I tried your patch, and it seems to work fine, although the messages print out more than once per second. I like the idea of being able to specify the rate of the timer interrupts. Maybe you could explain how this works in more detail? -Dave On Fri, Jan 11, 2002 at 11:15:02PM -0600, Parc wrote: > I've munged together a couple lines to set the timer to 10ms jiffies, > and added a sleep(). Could somebody try these out for me? For some > reason I don't get the correct timing occasionally. This patch should > cause the kernel to loop saying "tick" once a second. > > Thanks > > Index: drivers/timer.c > =================================================================== > RCS file: /cvsroot/geekos/drivers/timer.c,v > retrieving revision 1.2 > diff -c -r1.2 timer.c > *** drivers/timer.c 2001/12/24 15:35:57 1.2 > --- drivers/timer.c 2002/01/12 05:10:29 > *************** > *** 11,16 **** > --- 11,20 ---- > #include "sys/geekos/kthread.h" > #include "sys/geekos/timer.h" > > + #define TICKRATE 1193182 > + //#define FIND_RATE(hz) (((TICKRATE + hz) / 2) / hz) > + #define FIND_RATE(hz) (((TICKRATE + hz) / 2) / hz) > + > // global tick counter > volatile unsigned long g_numTicks; > > *************** > *** 56,61 **** > --- 60,72 ---- > > Print( "Initializing timer...\n" ); > > + //Set the tick rate to 10ms > + disable_interrupts(); > + out_byte(0x043, 0x34); > + out_byte(0x040, FIND_RATE(100) & 0xff); > + out_byte(0x040, FIND_RATE(100) >> 8); > + enable_interrupts(); > + > // Install an interrupt handler for the timer IRQ > install_irq( TIMER_IRQ, &timer_interrupt_handler ); > > *************** > *** 63,66 **** > --- 74,83 ---- > irqMask = get_irq_mask(); > irqMask &= ~(1 << TIMER_IRQ); > set_irq_mask( irqMask ); > + } > + > + void sleep(int time) { > + long start = g_numTicks + time +1; > + Print("Sleeping from %x to %x\n",g_numTicks,start); > + while((g_numTicks - start) > 0) ; //spin > } > Index: include/sys/geekos/timer.h > =================================================================== > RCS file: /cvsroot/geekos/include/sys/geekos/timer.h,v > retrieving revision 1.2 > diff -c -r1.2 timer.h > *** include/sys/geekos/timer.h 2001/12/24 15:35:57 1.2 > --- include/sys/geekos/timer.h 2002/01/12 05:10:29 > *************** > *** 13,17 **** > --- 13,18 ---- > extern volatile unsigned long g_numTicks; > > void init_timer( void ); > + void sleep( int time ); > > #endif // TIMER_H > Index: kern/main.c > =================================================================== > RCS file: /cvsroot/geekos/kern/main.c,v > retrieving revision 1.6 > diff -c -r1.6 main.c > *** kern/main.c 2001/12/24 15:35:57 1.6 > --- kern/main.c 2002/01/12 05:10:30 > *************** > *** 51,56 **** > --- 53,62 ---- > // Test Join() function > { > struct kernel_thread* child; > + for(; ;) { > + sleep(100); > + Print("tick.\n"); > + } > Print( "Starting child...\n" ); > child = start_kernel_thread( &test_join, 0, PRIORITY_NORMAL, FALSE ); > Join( child ); |
From: Parc <ne...@ri...> - 2002-01-12 05:17:30
|
I've munged together a couple lines to set the timer to 10ms jiffies, and added a sleep(). Could somebody try these out for me? For some reason I don't get the correct timing occasionally. This patch should cause the kernel to loop saying "tick" once a second. Thanks Index: drivers/timer.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/geekos/drivers/timer.c,v retrieving revision 1.2 diff -c -r1.2 timer.c *** drivers/timer.c 2001/12/24 15:35:57 1.2 --- drivers/timer.c 2002/01/12 05:10:29 *************** *** 11,16 **** --- 11,20 ---- #include "sys/geekos/kthread.h" #include "sys/geekos/timer.h" =20 + #define TICKRATE 1193182 + //#define FIND_RATE(hz) (((TICKRATE + hz) / 2) / hz) + #define FIND_RATE(hz) (((TICKRATE + hz) / 2) / hz) +=20 // global tick counter volatile unsigned long g_numTicks; =20 *************** *** 56,61 **** --- 60,72 ---- =20 Print( "Initializing timer...\n" ); =20 + //Set the tick rate to 10ms + disable_interrupts(); + out_byte(0x043, 0x34); + out_byte(0x040, FIND_RATE(100) & 0xff); + out_byte(0x040, FIND_RATE(100) >> 8); + enable_interrupts(); +=20 // Install an interrupt handler for the timer IRQ install_irq( TIMER_IRQ, &timer_interrupt_handler ); =20 *************** *** 63,66 **** --- 74,83 ---- irqMask =3D get_irq_mask(); irqMask &=3D ~(1 << TIMER_IRQ); set_irq_mask( irqMask ); + } +=20 + void sleep(int time) { + long start =3D g_numTicks + time +1;=20 + Print("Sleeping from %x to %x\n",g_numTicks,start); + while((g_numTicks - start) > 0) ; //spin } Index: include/sys/geekos/timer.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/geekos/include/sys/geekos/timer.h,v retrieving revision 1.2 diff -c -r1.2 timer.h *** include/sys/geekos/timer.h 2001/12/24 15:35:57 1.2 --- include/sys/geekos/timer.h 2002/01/12 05:10:29 *************** *** 13,17 **** --- 13,18 ---- extern volatile unsigned long g_numTicks; =20 void init_timer( void ); + void sleep( int time ); =20 #endif // TIMER_H Index: kern/main.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/geekos/kern/main.c,v retrieving revision 1.6 diff -c -r1.6 main.c *** kern/main.c 2001/12/24 15:35:57 1.6 --- kern/main.c 2002/01/12 05:10:30 *************** *** 51,56 **** --- 53,62 ---- // Test Join() function { struct kernel_thread* child; + for(; ;) { + sleep(100); + Print("tick.\n"); + } Print( "Starting child...\n" ); child =3D start_kernel_thread( &test_join, 0, PRIORITY_NORMAL, FALSE ); Join( child ); |
From: Parc <pa...@au...> - 2002-01-04 04:32:46
|
It appears the commits labeled: Used a script to change all compound identifiers to lowercase format, to conform to the usual C naming conventions. have broken the tree. Daveho, could you check your commits and try again? Thanks. -parc |
From: David H. <da...@cs...> - 2001-12-13 15:23:53
|
On Thu, Dec 13, 2001 at 11:11:06AM -0500, C.Mohanasundaram wrote: > Hi All, > > just now i downloaded the geekos source and compiled it in my RedHat 7.1 > machine.But i donno how to use it. i have got some .bin files and .img files. > how should i proceed. You may either (1) write "fd.img" to a floppy and boot it on a real machine, or (2) use Bochs (http://bochs.sourceforge.net), which is a PC hardware emulator I use Bochs, since it is much faster to run Bochs than to boot a real computer. There is a .bochsrc file in the geekos directory which is set up to boot GeekOS within Bochs. You will need to edit that file to reflect the directory in which you install Bochs. -Dave |
From: C.Mohanasundaram <mo...@lu...> - 2001-12-13 05:43:40
|
Hi All, just now i downloaded the geekos source and compiled it in my RedHat 7.1 machine.But i donno how to use it. i have got some .bin files and .img files. how should i proceed. thanks and regards, mohan. |
From: David H. <da...@cs...> - 2001-11-18 14:59:20
|
The only memory within the ISA hole that geekos uses is the text video memory, which is at physical address 0xB8000. You should ensure that the physical page at that address is mapped into the kernel region of every address space. (1 page suffices because the text screen is 80x25, and 2 bytes are used for each character). -Dave On Sun, Nov 18, 2001 at 02:14:50AM -0500, Patrick Sodre Carlos wrote: > > Hi Dave, > > Its me bugging you again. I have this "stupid" doubt about the pages > reserved for the HardWare and how they interact with the pagin scheme. I > understand that the upper 256 pages that correspond to the area reserved > for the kernel must be "copied" to every other page directory. Now, my > doubt is whether or not to copy/map the pages reserved for the ISA_HOLE. I > believe that they must be mapped in the kernel master page directory, but > I'm not sure if they must be mapped in the User Page Directory as well. I > read one manual on the i386 but I could not find anything related to that. > > If you know any document which might contain this type of info, or if > you know the answer please tell me :) > > Regards, > Patrick Sodre > > > _______________________________________________ > Geekos-devel mailing list > Gee...@li... > https://lists.sourceforge.net/lists/listinfo/geekos-devel |
From: Patrick S. C. <so...@wa...> - 2001-11-18 07:16:01
|
Hi Dave, Its me bugging you again. I have this "stupid" doubt about the pages reserved for the HardWare and how they interact with the pagin scheme. I understand that the upper 256 pages that correspond to the area reserved for the kernel must be "copied" to every other page directory. Now, my doubt is whether or not to copy/map the pages reserved for the ISA_HOLE. I believe that they must be mapped in the kernel master page directory, but I'm not sure if they must be mapped in the User Page Directory as well. I read one manual on the i386 but I could not find anything related to that. If you know any document which might contain this type of info, or if you know the answer please tell me :) Regards, Patrick Sodre |
From: David H. <da...@cs...> - 2001-11-15 16:57:43
|
Hi Patrick, You can (and should) use area where the heap is currently located as part of the normal free page list. Heap allocation is currently only used for user mode programs, so aside from that you won't break anything. Once virtual memory is enabled, you can create a kernel heap (the size of which can be extended dynamically as needed). Also, once paging is implemented it makes sense to completely eliminate the use of segmentation for user mode programs. -Dave On Thu, Nov 15, 2001 at 11:45:32AM -0500, Patrick Sodre Carlos wrote: > > Hi Dave, > I have this doubt: If full paging is implemented do I still need to > Init_Heap or can I treat those extra pages are available frames? I know > that if I do not use init_heap I won't be able to start user programs > until Malloc is fixed. Another question is, would anything else break if > init_heap does not get called? > > Thanks in advance for your time, > Patrick Sodre > > > _______________________________________________ > Geekos-devel mailing list > Gee...@li... > https://lists.sourceforge.net/lists/listinfo/geekos-devel |
From: Patrick S. C. <so...@wa...> - 2001-11-15 16:45:43
|
Hi Dave, I have this doubt: If full paging is implemented do I still need to Init_Heap or can I treat those extra pages are available frames? I know that if I do not use init_heap I won't be able to start user programs until Malloc is fixed. Another question is, would anything else break if init_heap does not get called? Thanks in advance for your time, Patrick Sodre |
From: David H. <da...@cs...> - 2001-11-14 21:55:44
|
For some reason modules don't seem to be accessible via anonymous CVS. For the time being, you can replace "geekos-kernel" with kern include arch build drivers scripts This will create the same directory hierarchy as the geekos-kernel module. -Dave On Wed, Nov 14, 2001 at 10:45:09PM +0100, Niels Sandholt Busch wrote: > > I have problems checking the 'geekos-kernel' module out from cvs. > This is what it says: > > [niels@nuthatch niels]$ cvs -z3 -d:pserver:ano...@cv...:/cvsroot/geekos co geekos-kernel > cvs server: modules file missing directory for module geekos-kernel > cvs [checkout aborted]: cannot expand modules > [niels@nuthatch niels]$ > > The only way for me to checkout is by substituting 'geekos-kernel' with > '.'. And then I get everything... > > Please tell me how to do it correctly. Thanks. > > \Niels > > > _______________________________________________ > Geekos-devel mailing list > Gee...@li... > https://lists.sourceforge.net/lists/listinfo/geekos-devel |
From: Niels S. B. <ni...@di...> - 2001-11-14 21:45:15
|
I have problems checking the 'geekos-kernel' module out from cvs. This is what it says: [niels@nuthatch niels]$ cvs -z3 -d:pserver:ano...@cv...:/cvsroot/geekos co geekos-kernel cvs server: modules file missing directory for module geekos-kernel cvs [checkout aborted]: cannot expand modules [niels@nuthatch niels]$ The only way for me to checkout is by substituting 'geekos-kernel' with '.'. And then I get everything... Please tell me how to do it correctly. Thanks. \Niels |
From: David H. <da...@cs...> - 2001-11-14 21:29:58
|
Fixed (in geekos-kernel CVS module). Thanks! -Dave On Wed, Nov 14, 2001 at 10:21:33PM +0100, Niels Sandholt Busch wrote: > > There seems to be an implicit declaration of memset in mem.c. > > On my system (redhat 7.2, gcc 2.96), I get a warning and hence compilation > fails due to the -Werror compiler option. > > So maybe string.h should be included in mem.c. > > > \Niels > > > > _______________________________________________ > Geekos-devel mailing list > Gee...@li... > https://lists.sourceforge.net/lists/listinfo/geekos-devel |
From: Niels S. B. <ni...@di...> - 2001-11-14 21:21:42
|
There seems to be an implicit declaration of memset in mem.c. On my system (redhat 7.2, gcc 2.96), I get a warning and hence compilation fails due to the -Werror compiler option. So maybe string.h should be included in mem.c. \Niels |