You can subscribe to this list here.
2005 |
Jan
(5) |
Feb
(6) |
Mar
(7) |
Apr
(3) |
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
(7) |
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
From: Noor H. <ala...@ya...> - 2012-12-15 11:27:54
|
Hello, I have a question please: I tried to boot the ManRix using Grub, My version is Grub 2 not Grub legacy so I changed the menuentry that it posted on ManRix site and when I booted, it was stuck on : get_page: get_page used before memory inilization.... What I must do? To know, I didn't make free partition to boot the ManRix, I used the partition I have and it selected the one that it used to boot my ubuntu. Is there is a need to create a free parition for ManRix and how can I do this? I tried to boot the ManRix floppy image using Bochs and when I booted the ext2 image, the result was: Booting 'ManRIX' root (fd0) Filesystem type is ext2fs, using whole disk kernel /sys/kern [Multiboot-elf, <0x100000:0xbd1c:0x0>, <0x10c000:0x16cc:0x2df8>, shtab=0x111 1e0, entry=0x100000] module /sys/conmngr [MultCONMNGR: Initializing Console Manager: ManRiX Microkernel Loaded as '/sys/kern'. FSIO manager Initializing.... 0, 0xfa58 bytes] Initializing MISC I/O MngrMHZ. 14:6:31 15/12/2012 entry 100fb4 size c000 end 10 cfb4entry 1044e0 size 10000 end 1144e0entr ) ط p ô 0ca80entry 100 Starting INIT version 1.0 ...Multi Read/Write supportedining /sys/fsiomngr maint TLB:Code:(null)ciomngr maintaining /bin/init ] CS: 1B DS: 23 ES: 23 SS: 23 EIP: 1019F9 ESP: DFEFF9D0 EBP: DFEFF9E8 EDI: DFEFFA00 ESI: 1ve, 32 byte line siz EAX: 400 EBX: 0 ECX: 0 EDX: 0 We received divide_error exception with errorcode 0 in kernel mode. PANICك Initializing VFS.L2 Cache: 128K-bytes, 4-way set associative, 32 byte line size And when I boot the fat image, the result was: Booting '"ManRiX OS"' root (fd0) Filesystem type is fat, using whole disk kernel /sys/kern [Multiboot-elf, <0x100000:0xbcfc:0x0>, <0x10c000:0x16cc:0x2df8>, <0x1104c4:0 x2c8:0x0>, shtab=0x111208, entry=0x100000] module /sys/conmngr ManRiX Microkernel Loaded as '/sys/kern'.ytes] Total Memory: 32704K 5 get_page(): get_page used before memory initialization ’odule /bin/init [Multiboot-module @ 0x131000, 0xa335 bytes] What I must do please? I'd like to boot in both ways and the most important thing is to boot using Grub... |
From: razes r. <inv...@go...> - 2010-08-14 21:59:46
|
You're invited! razes rana has invited you to see his photos and favorite places! Accept invitation: http://gowalla.com/r/22F5w Gowalla - Discover, capture and share places and events with your friends. |
From: Manish R. <reg...@gm...> - 2005-09-18 11:16:20
|
On 9/18/05, Shakthi Kannan <gen...@ya...> wrote:=20 >=20 > root (hd0,1) > Filesystem type is ext2fs, partition type 0x83 > kernel /boot/manrix/kern > [Multiboot-elf, <0x100000:0xad1c:0x0>, > <0x10b000:0x2aa4:0x1a20>, shtab:0x1101e0, > entry=3D0x100000] > module /boot/manrix/conmngr > [Multiboot module @ 0x114000, 0xc4b5 bytes] > ManRix Microkernel Loaded as '/boot/manrix/kern'. > Total Memory: 523648k @ 0x122 000, 0x106fb bytes > thr 10c000 CPU Speed 1393867 MHz 16:22:10 17/9/2005 > entry 100000 size d000 end 10d000 entry 100000 size > 11000 end 111000 entry 100000 size b000 end 10b000 > entry 100000 size d000 end 10d00 maintaining > /boot/manrix conmngr ENTRY returned NULL Sending SEGV > to thread 0 add 63332611db bytes > CS: 1B DS: 23 ES: 23SS:23 > EIP: 100025 ESP: DFEFFFC3 > EBP: DFEFFFFB EDI: AB8F4109 > ESI: 3001F8D0 > EAX: FF EBI: 63332605 ECX: 33312035 > EDX: AB904809 > Dequeuing 14 Sig 0 Exit Called by tid0 pid 0 >=20 > My grub entry for manrix: >=20 > title ManRiX OS > root (hd0,1) > kernel /boot/manrix/kern > module /boot/manrix/conmngr > module /boot/manrix/fsiomngr 2 > module /boot/manrix/init > module /boot/manrix/misciomngr try removing misciomngr.=20 I will post latest codes in a day. A hint for debugging is create the disassembly of the application that=20 caused the fault (identified by pid see bootup.c).=20 objdump -D appname > my.dmp see the address where fault occured.... cs=3D1b ds=3D23 means it is user mode app. regards Manish Regmi |
From: Shakthi K. <gen...@ya...> - 2005-09-18 09:45:41
|
Hi, --- Manish Regmi <reg...@gm...> wrote: > replace asm/pmap.c: pmap_pre_init() with this and > give a second try. > > void pmap_pre_init() > { > extern u8 _text_start[], _end[], _text_end[]; > vm_offset_t addr; I tried this patch. Output is as follows: Booting 'ManRiX OS' root (hd0,1) Filesystem type is ext2fs, partition type 0x83 kernel /boot/manrix/kern [Multiboot-elf, <0x100000:0xad1c:0x0>, <0x10b000:0x2aa4:0x1a20>, shtab:0x1101e0, entry=0x100000] module /boot/manrix/conmngr [Multiboot module @ 0x114000, 0xc4b5 bytes] ManRix Microkernel Loaded as '/boot/manrix/kern'. Total Memory: 523648k @ 0x122 000, 0x106fb bytes thr 10c000 CPU Speed 1393867 MHz 16:22:10 17/9/2005 entry 100000 size d000 end 10d000 entry 100000 size 11000 end 111000 entry 100000 size b000 end 10b000 entry 100000 size d000 end 10d00 maintaining /boot/manrix conmngr ENTRY returned NULL Sending SEGV to thread 0 add 63332611db bytes CS: 1B DS: 23 ES: 23SS:23 EIP: 100025 ESP: DFEFFFC3 EBP: DFEFFFFB EDI: AB8F4109 ESI: 3001F8D0 EAX: FF EBI: 63332605 ECX: 33312035 EDX: AB904809 Dequeuing 14 Sig 0 Exit Called by tid0 pid 0 My grub entry for manrix: title ManRiX OS root (hd0,1) kernel /boot/manrix/kern module /boot/manrix/conmngr module /boot/manrix/fsiomngr 2 module /boot/manrix/init module /boot/manrix/misciomngr Regards, SK -- Shakthi Kannan, MS Software Engineer, Specsoft (Hexaware Technologies) [E]: gen...@ya... [M]: (91) 98407-87007 [W]: http://www.shakthimaan.com [L]: Chennai, India __________________________________ Yahoo! Mail - PC Magazine Editors' Choice 2005 http://mail.yahoo.com |
From: Manish R. <reg...@gm...> - 2005-09-16 17:45:57
|
Hi, In manrix, pmap_pre_init() (asm/pmap.c) creates mapping for first 4 MB. The= =20 first 1 MB is unused. grub loads kernel and modules in 1MB+ and the rest (<= =20 3MB) is free to use. The rest of the memory cannot be used unless the memor= y=20 subsystem is initialized properly.=20 ManRiX virtual memory manager keeps information about each page on a=20 structure called "struct page" which is 34 bytes. So just to store per page= =20 structure the system needs 4.25 MB for 512 MB memory. Your system tried to use memory >4MB. so, you got page fault. The page faul= t=20 handler tried to create a mapping but the the memory subsystem was not=20 initialized. so the system paniced and halted.=20 We need to devise a workaround for this issue. 1) create additional mapping according to tatal memory.=20 2) ??? replace asm/pmap.c: pmap_pre_init() with this and give a second try. =20 void pmap_pre_init() { extern u8 _text_start[], _end[], _text_end[]; vm_offset_t addr; int i; pde_t *pte, *pte2; pde_t *pde; kernel_map.pdbr =3D (pde_t *) get_next_frame(); pte =3D (pde_t *) get_next_frame(); pde =3D kernel_map.pdbr; for(i=3D0 ; i < NTABLES ; i++) kernel_map.pdbr[i] =3D 0; /* we initialize one page directory entries only. It is * enough to hold 4 MB memory. */ pde[KTABLE_START] =3D (addr_to_pte((vm_offset_t)pte)) | PAGE_PRESENT |=20 PAGE_RW; /* * create mapping for more memory. Needed if the system has more * physical memory than 256MB. Used for per page structure if it exceeds 4mb= =20 limit. */ if(ending_mem >=3D 0x10000000) { pte2 =3D (pde_t *) get_next_frame(); pde[KTABLE_START + 1] =3D (addr_to_pte((vm_offset_t)pte2)) | PAGE_PRESENT |= =20 PAGE_RW; } /* temp mapping only */ pde[0] =3D (addr_to_pte((vm_offset_t)pte)) | PAGE_PRESENT | PAGE_RW ; for(i =3D 0 ; i < NTABLES ; i++) { addr =3D i*PAGE_SIZE ; if (addr >=3D 0xa0000 && addr <=3D 0xbffff) pte[i] =3D (addr_to_pte(addr)) | PAGE_PRESENT | PAGE_RW ; if((addr >=3D (vm_offset_t)_text_start) && (addr <=3D (vm_offset_t)_end)) { if((addr >=3D (vm_offset_t)_text_start) && (addr <=3D (vm_offset_t)_text_en= d)) pte[i] =3D (addr_to_pte(addr)) | PAGE_PRESENT|PAGE_RW; else pte[i] =3D (addr_to_pte(addr)) | PAGE_PRESENT | PAGE_RW; } else if((addr >=3D (vm_offset_t)pte) && (addr <=3D ((vm_offset_t)pte +=20 PAGE_SIZE))) pte[i] =3D (addr_to_pte(addr)) | PAGE_PRESENT | PAGE_RW ; else if((addr >=3D (vm_offset_t)pde) && (addr <=3D ((vm_offset_t)pde +=20 PAGE_SIZE))) pte[i] =3D (addr_to_pte(addr)) | PAGE_PRESENT | PAGE_RW ; else pte[i] =3D 0 /*(addr_to_pte(addr)) | PAGE_PRESENT | PAGE_RW */; } invlpg((void *)addr); list_init(&pmap_object.page); pmap_object.size =3D ending_mem - starting_mem; } Regards=20 Manish Regmi |
From: Manish R. <reg...@gm...> - 2005-09-16 17:36:41
|
hi all, i woulld like to share some idea on submitting bug reports, patches, coding= =20 style etc. If you find any kind of bugs, feel free to discuss it on the list. You can= =20 either fix it yourself or ask others to have it fixed. If you want it add features, fix bugs etc. you are free to do so. And you= =20 will also get credit for your work. You can post a patch to the list. Feel= =20 free to write your copyright info (Must be GPL), Name , Mailing address etc= . In order to create a patch, you can use the diff utility. Create two source= =20 trees, the original one and the modified one. Also do not patch the whole= =20 system. For example if you like to patch microkernel, create another=20 microkernel tree with your modifications. call the original one=20 "microkernel" and the other one "mymicro"(or whatever you like). then type diff -urN microkernel/ mymicro/ > mycro.patch For eg. for fsiomngr, go to servers folder. create a modified tree of=20 fsiomngr and call it "myfsmngr". then type. diff -urN fsiomngr/ myfsmngr/ > myfsmngr.patch To apply the patch, go to the root of subsystem, say microkernel folder and= =20 type cat mycro.patch | patch -p1 For now there is no fixed coding style but GNU or linux like coding style i= s=20 good. Regards Manish Regmi |
From: Shakthi K. <gen...@ya...> - 2005-09-15 18:48:58
|
Hi Manish, Thanks for your reply. --- Manish Regmi <reg...@gm...> wrote: > How much memory do you have? > It seems you have >256 ... 512 perhaps. Yes, 512 MB. > try on 128MB if possible. Thanks, SK -- Shakthi Kannan, MS Software Engineer, Specsoft (Hexaware Technologies) [E]: gen...@ya... [M]: (91) 98407-87007 [W]: http://www.shakthimaan.com [L]: Chennai, India __________________________________ Yahoo! Mail - PC Magazine Editors' Choice 2005 http://mail.yahoo.com |
From: Manish R. <reg...@gm...> - 2005-09-15 18:02:28
|
On 9/15/05, Shakthi Kannan <gen...@ya...> wrote:=20 >=20 > Greetings! >=20 > I need some help on booting manrix on Intel x86 P4 > system. >=20 > 1. I downloaded manrix from: >=20 > http://manrix.sf.net/code/ManRiX.tar.gz >=20 > 2. Extracted it and did make inside mickernel, servers > (busmngr, console, fs-io, miscio), soft (libc, cmd, > logd, ...) (The mount somehow failed as I didn't do it > as root, and I didn't want to use setup.sh either). > Using gcc-3.2.3. >=20 > 3. I created a /boot/manrix directory and copied > conmngr, fsiomngr, init, kern, ls and msiciomngr to > it. >=20 > 4. Updated my /boot/grub/menu.lst as follows: >=20 > title Red Hat Enterprise Linux WS (2.4.21-4.EL) > root (hd0,1) > kernel /boot/vmlinuz-2.4.21-4.EL ro root=3DLABEL=3D/ > initrd /boot/initrd-2.4.21-4.EL.img >=20 > title ManRiX OS > root (hd0,1) > kernel /boot/manrix/kern > module /boot/manrix/conmngr > module /boot/manrix/fsiomngr 2 > module /boot/manrix/init > module /boot/manrix/misciomngr > module /boot/manrix/ls Everything is ok upto here. Except that you need not load 'ls'. init=20 executes sh (a very simple shell) and from there you can execute through=20 command prompt. As the matter of fact, the project is still in the primitive stage and=20 contails zillions of bugs. :)=20 5. When I choose manrix on boot on grub, I get this > output and it stops there: >=20 > Booting 'ManRiX OS' > root (hd0,1) > Filesystem type is ext2fs, partition type 0x83 > kernel /boot/manrix/kern > [Multiboot-elf, <0x100000:0xad1c:0x0>, > <0x10b000:0x2aa4:0x1a20>, shtab:0x1101e0, > entry=3D0x100000] > module /boot/manrix/conmngr > [Multiboot module @ 0x114000, 0xc4b5 bytes] > ManRix Microkernel Loaded as '/boot/manrix/kern'. > Total Memory: 516032k@0x121000, 0x1081f bytes] > get_page (); get_page used before memory > initialization > [Multiboot module @ 0x132000, 0xb017 bytes] > module /boot/manrix/misciomngr > [Multiboot module @ 0x13e000, 0xc1f7 bytes] > module /boot/manrix/ls > [Multiboot module @ 0x14b000, 0x9ccc bytes] >> get_page (); get_page used before memory initialization It seems there is some bug in vm/vmpage.c I did not expected it to call get_page before that function (may be through= =20 page fault). Looks like a bug. How much memory do you have? It seems you have >256 ... 512 perhaps. The page table entry is created for= =20 Only first 4MB. You system required more than that for page_page.=20 What is the output that I should get? Do I need to get > a console? >=20 > Can anyone tell me as to what I am doing wrong and how > I can get manrix booted? It seems the problem is with the code itself. give me time to have a=20 closer look....... try on 128MB if possible. regards Manish Regmi |
From: Shakthi K. <gen...@ya...> - 2005-09-15 08:05:28
|
Greetings! I need some help on booting manrix on Intel x86 P4 system. 1. I downloaded manrix from: http://manrix.sf.net/code/ManRiX.tar.gz 2. Extracted it and did make inside mickernel, servers (busmngr, console, fs-io, miscio), soft (libc, cmd, logd, ...) (The mount somehow failed as I didn't do it as root, and I didn't want to use setup.sh either). Using gcc-3.2.3. 3. I created a /boot/manrix directory and copied conmngr, fsiomngr, init, kern, ls and msiciomngr to it. 4. Updated my /boot/grub/menu.lst as follows: title Red Hat Enterprise Linux WS (2.4.21-4.EL) root (hd0,1) kernel /boot/vmlinuz-2.4.21-4.EL ro root=LABEL=/ initrd /boot/initrd-2.4.21-4.EL.img title ManRiX OS root (hd0,1) kernel /boot/manrix/kern module /boot/manrix/conmngr module /boot/manrix/fsiomngr 2 module /boot/manrix/init module /boot/manrix/misciomngr module /boot/manrix/ls 5. When I choose manrix on boot on grub, I get this output and it stops there: Booting 'ManRiX OS' root (hd0,1) Filesystem type is ext2fs, partition type 0x83 kernel /boot/manrix/kern [Multiboot-elf, <0x100000:0xad1c:0x0>, <0x10b000:0x2aa4:0x1a20>, shtab:0x1101e0, entry=0x100000] module /boot/manrix/conmngr [Multiboot module @ 0x114000, 0xc4b5 bytes] ManRix Microkernel Loaded as '/boot/manrix/kern'. Total Memory: 516032k@0x121000, 0x1081f bytes] get_page (); get_page used before memory initialization [Multiboot module @ 0x132000, 0xb017 bytes] module /boot/manrix/misciomngr [Multiboot module @ 0x13e000, 0xc1f7 bytes] module /boot/manrix/ls [Multiboot module @ 0x14b000, 0x9ccc bytes] What is the output that I should get? Do I need to get a console? Can anyone tell me as to what I am doing wrong and how I can get manrix booted? Thanks, SK -- Shakthi Kannan, MS Software Engineer, Specsoft (Hexaware Technologies) [E]: gen...@ya... [M]: (91) 98407-87007 [W]: http://www.shakthimaan.com [L]: Chennai, India __________________________________ Yahoo! Mail - PC Magazine Editors' Choice 2005 http://mail.yahoo.com |
From: Rajesh R.C <raj...@gm...> - 2005-07-25 18:02:54
|
The new look is given to the site. This time site is too user oriented.We have add some of the links like 1. FAQ 2. Updated microkernel and servers. 3. Paper in pdf and doc format. 4. Documentation , this page will be updated soon 5. floppy image 6. Design description of kernel and server services. If any problem don't forget to drop a mail -- Rajesh Bikram RC "LIVE IN DYNAMIC PRESENT.THINK ABOUT DYNAMIC FUTURE" --=20 Rajesh Bikram RC "LIVE IN DYNAMIC PRESENT.THINK ABOUT DYNAMIC FUTURE" |
From: Manish R. <reg...@gm...> - 2005-07-13 17:44:35
|
Hi all, I have updated the latest codes after a long time. At last the things are working. Changes: - Now the vfork(), exec() are working well. - I have also written a very simple shell (sh), ls etc. which is just for testing purposes. We have to strengthen our C library so that we can port GNU coreutils to ManRiX. - The interrupt handling mechanism has been heavily optimised. Now it no longer uses the UNIX signals for notifying the driver theread the presence of IRQ. There are still a lot of code which does not work as intended.... If you find any type of bugs, don't forget to discuss it here.... Your participation is highly appreciated. Thanks Manish Regmi |
From: Prakash M. <pma...@da...> - 2005-04-24 08:17:27
|
> > I think it is difficult to make a micro-kernel realtime also. The most > that > > can be achieved is "soft" realtime. Microkernels are best with > asynchronous > > system calls, and realtime means all things have to synchronize > perfectly. > > It could be a little contradictory, but perhaps there is a way... > > > > To my understanding microkernel design is not a constrant for being > realtime. Our main focus should be to minimise latencies(mainly > scheduling latency and interrupt latency) as much as possible. Infact > Most Popular Realtime OS are Microkernel. One being the Pioneer in > RTOS QNX(www.qnx.com). I was inspired by their design. By making > realtime kernels we would neither be supporting 8051's and variants > nor PICs (it would be very difficult or almost impossible). We would > be supporting high end embedded chips like ARM(they are one of the > leader of embedded world market after Intel released StrongARM), > PowerPC, x86 etc. Message passing overhead is not much issue in these > systems. I just went thru the QNX website and found it to be too great to be true! Oops, since it is there, it must be true. How about we model manrix after QNX? Are there any copyright issues involved? I don't think so. Maybe some algorithms are proprietary but the concept is up there for grabs, I guess and they obviously don't reveal the real trade secrets on the web... Does anybody know anyone in Kathmandu or nearby who has extensive experience with the QNX? If yes, we could consult with him/her. Otherwise, no big fuss; we can carry on! Regards, Prakash. |
From: Manish R. <reg...@gm...> - 2005-04-21 17:11:25
|
On 4/21/05, Prakash Manandhar <pma...@da...> wrote: > Any other updates in the cvs folder since this one? >=20 > Prakash. No, The cvs Sources are too old. I have not got chance to update the cvs server. I will update it as soon as i get access to **ix system (with internet connection). regards Manish Regmi |
From: Prakash M. <pma...@da...> - 2005-04-21 12:54:57
|
Any other updates in the cvs folder since this one? Prakash. > -----Original Message----- > From: man...@li... [mailto:manrix-devel- > ad...@li...] On Behalf Of Manish Regmi > Sent: Wednesday, March 16, 2005 17:49 > To: man...@li... > Subject: [Manrix-devel] Updates (source and image ). > > Hi all, > I have updated the both the source codes and Floppy image of ManRiX. > The CVS server is not updated. I will do it as soon i get access to > Unix/Linux Box. > > Updates: > > 1) Source Codes for File Manager. > The file manager source code contains > VFS code + ext2 fs code + buffer cache code. > > 2) Sources for ATA compatible Disk Controllers. > IT can either coexist with file manager (for speed) > or run as a seperate server. > Can be configured at compile time. > > 3) Microkernel: > > - Dup System Call added. > - mmap fixed. Now the address is first allocated from VM manager for > Anonymous map. > - exit problem fixed. Now the exit works on call during Signal delivery. > - exec works (weird behaviour on first page fault). > - vfork works perfect (Child guranteed to run first. > Parent guranteed to run only after child either do exec or exit.) > - fork works (vm design issue; how to handle shadow Objects????) > - message Passing; MSG_LONG_RECEIVE added; Now long messages can also > be received. > - message Passing; MSG_MAP_* problem solved; > Message can now be passed through page table mapping. > - TLB flushed after each page table manipulation. (thanks to Brenden > Trotter) > - argc, argv, and env now works for both exec'd programs and modules > loaded by grub. > > (see changelog.txt files...) > > 4) LIBC: > A lot of functions added.(i have not created a changelog)... > > 5) small programs like > init, logd, login (Incomplete). > > > I know the project is going on very slowly. This is what happens with > one man Army. What all it takes is TIME. > > HELP: > Any help is highly appriciated in LIBC. There are thousands of > functions yet to be written (ANSI + POSIX). > > Please run the codes and give me feedbacks.... > (NOTE: The exec'd process has problem after first page fault. ) > > regards > Manish Regmi > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Manrix-devel mailing list > Man...@li... > https://lists.sourceforge.net/lists/listinfo/manrix-devel |
From: Manish R. <reg...@gm...> - 2005-03-28 17:13:12
|
Hi, I need some suggestions on issues like, - where to put PCI bus driver. - What services should be available to Other Drivers. (Not to users; They will have /proc interface shortly). I was thinking of putting the Bus Driver together with other bus Drivers. PCI + USB + (whatever). Will it be ok? Please give me your feedbacks. Regards Manish Regmi |
From: Manish R. <reg...@gm...> - 2005-03-28 17:06:55
|
The code below (with heavy documentation) teaches you how to write system services and device drivers in Manrix. Remember they all are User Land Processes. they are also available in manrix/server/ If you have any questions/suggestions, drop a mail. /* server_skeleton.c */ /* * This is the sample skeleton server. * This shows how you can implement a server (or System service) * in ManRiX. */ #include <mrx/svrpool.h> /* * This Macro defines how many threads to create in advance. * We have implemented a pool of threads that works on Requests. * They are also called worker Threads. */ #define MAX_SVR_THREADS 5 /* * This is a Macro that tells which signal to use for notifying * Worker threads on arrival of request. */ #define SVR_REQUEST SIGRTMIN /* * a structure to hold pool struture. * see mrx/svrpool.h of LIBC. */ struct thrpool svrpool = {0}; /* * a function pointer type for functions which is called * according to Client Request */ typedef int (* fptr_t)(message_t ); /* * Functions to handle request */ int msg_no_func(message_t msg) { return 0; } int msg_svr_open(message_t msg) { return 0; } int msg_svr_close(message_t msg) { return 0; } int msg_svr_read(message_t msg) { return 0; } int msg_svr_write(message_t msg) { return 0; } /* * address of functions according to request number. * Suppose, if the client calls for service 3 ( Remember message * passing is only way of doing server requests in ManRiX, * msg->w1 can be the reqest number though not necessarily), * msg_svr_read is called. */ fptr_t svr_func[] = { msg_no_func, msg_svr_open, msg_svr_close, msg_svr_read, msg_svr_write, }; /* * This is an Alternative worker. * Only used when the pool is full. */ void *worker(poolstruct_t pool) { fptr_t ptr; ptr = svr_func[pool->request]; ptr(&pool->msg); return NULL; } /* * This is an alternative message handler. * It is called only when all pools are used. * It simply creates a thread and calls the worker */ void handle_full(void *ptr) { pthread_attr_t attr; struct sched_param parm; poolstruct_t thr; thr = (poolstruct_t)malloc(sizeof(struct poolstruct)); if(thr == NULL) return ; pthread_attr_init(&attr); parm.sched_priority = PRIO_SYS_DEF; pthread_attr_setschedparam(&attr, &parm); pthread_create(&thr->owner_id, &attr, (pthtype_t)worker, thr); } /* * The worker thread function. All threads in the pool * gets here and waits for the arrival of request. * After the arrival of the request, call the function * according to the request number. */ void *svr_worker(poolstruct_t pool) { sigset_t set; struct sigaction action; int num, off; fptr_t ptr; /* * Just respond to the particular signal used to notify * worker thread. Not other signals. */ sigfillset(&set); sigdelset(&set, SVR_REQUEST); pthread_sigmask(SIG_SETMASK, &set, NULL); /* * Just ignore the the signal. * It will simply wake the thread on signal arrival. */ action.sa_handler = SIG_IGN; sigaction(SVR_REQUEST, &action, NULL); pool->flag |= POOL_DONE; /* * Just to know which thread in the bitmap we are using * Later we will mark it busy. */ off = ((unsigned long)pool - (unsigned long)svrpool.pool)/sizeof(struct poolstruct); /* * If you are using Previledged instructions (eg in/out, cli etc.). */ syscall_change_iopl(3); while(1) { /* * Wait for the signal. * i.e. the arrival of request */ sigwait(&set, &num); /* * Call the appropriate function according to request number. */ ptr = con_func[pool->request]; ptr(&pool->msg); /* * Clear the bitmap to mark it busy */ clear_bit(&svrpool.pool_bitmap, off); } } /* Main: */ int main(int argc, char *argv) { /* * You Must use this syscall if your server uses * Previledged instructions (eg in/out, cli etc.). * This raises the I/O previdge level of the calling thread * to 3. */ syscall_change_iopl(3); /* * You can specify the alternative handler * They will be used in case all the threads * in the pool is used. */ svrpool.altworker = (pthtype_t)handle_full; /* * Initialize bitmap to 0. So, in ia32, up to 32 threads can be * used (for now). 0 means free thread, 1 means used thread. */ svrpool.pool_bitmap = 0; /* * Initialize the thread pool. */ ret = pool_init(&svrpool, MAX_SVR_THREADS, (pthtype_t)svr_worker); if(ret < 0) printf("Pool Failed"); /* * Infinite loop where the thread listens to the request. * After the request arrives, the worker thread runs. */ msg_loop(&svrpool, SVR_REQUEST); return 0; } /* driver skeleton.c */ /* * This is the sample skeleton driver. * This shows how you can implement a driver as a seperate process * (or System service) in ManRiX. */ #include <pthread.h> #include <sched.h> #include <mrx/svrpool.h> #include <asm/syscall.h> /* The interrupt Entry */ void intr() { // Handle the interrupt here } /* * The Device Interrupt handler thread entry */ void *kbd_thr(void *data) { int ret; /* * You Must use this syscall if your driver uses * Previledged instructions (eg in/out, cli etc.). * This raises the I/O previdge level of the calling thread * to 3. Required in Most cases. */ syscall_change_iopl(3); /* * Make Sure you enable the IRQ in 8259a chips (in x86) */ IRQ_init(IRQNO); /* * Request for the IRQ. * This syscall hooks the function intr() to irq IRQNO * That function is called on each Interrupt. */ syscall_IRQ_request(IRQNO, intr); do{ /* * This function waits for the IRQ. */ ret = syscall_IRQ_wait(); }while(1 == 1); return NULL; } /* Initialize the driver */ /* Use main if required i.e main does not exist previously */ /* int main() */ int drv_init() { pthread_attr_t attr; struct sched_param parm; /* * You can use the same thread or create a seperate thread * for listening to interrupts. * Give maximum priority (but not a must). */ pthread_attr_init(&attr); parm.sched_priority = PRIO_RT_MAX; pthread_attr_setschedparam(&attr, &parm); pthread_create(NULL, &attr, drv_thr, NULL); return 0; } regards Manish Regmi |
From: Manish R. <reg...@gm...> - 2005-03-28 17:04:38
|
hi, I have updated the codes. Microkernel: - The modules loaded by Grub are assigned fixed Tid, pid (i.e not according to the boot order). New services: - BIOS32 and Peripheral Component Interconnect (PCI) bus driver. (PC/x86 only). - Processor driver (Identification of type, capabilities, Cache and TLB info only). (ia32 only). (Both implemented on single service 'misciomngr'). To test the manrix codes, Download, unzip both the codes(manrix.tar.gz) and Images(manrix.img.gz). To Create a bootable floppy, Unzip the manrix.img.gz; Write to floppy: In **ix cat manrix.img > /dev/fd0. In Windows get the program rawwrite (http://uranus.it.swin.edu.au/~jn/linux) to write to floppy. Compile the latest Codes.(use gcc) Microkernel: goto manrix/microkernel and type "make". copy kern to /sys/ (in the floppy) C library: goto manrix/soft/libc and type "make". Console manager: goto manrix/server/console and type "make" copy conmngr to /sys/ filesystem manager: goto manrix/server/fsiomngr and type "make". copy fsiomngr to /sys/ misc i/o manager: goto manrix/server/miscio and type "make". copy misciomngr to /sys/ init process: goto manrix/soft/init and type "make". copy init to /bin/ (in your floppy). login process: goto manrix/soft/login and type "make". copy login to /bin/ (in your floppy). Alternatively, you can copy the file to your free ext2 partition (or /boot BUT _NEVER_ to your **ix root partition). and add the following line to /boot/grub/grub.conf (or menu.lst). title ManRiX OS. (i am assuming you are not using LVM). root (hd0,6) # replace this with whatever on Linux entries. kernel /sys/kern module /sys/conmngr module /sys/fsiomngr 7 ; module /bin/init module /sys/misciomngr NOTE: the fsiomngr service requires a parameter which must be ext2/3 partiton and will be mounted as root. 6 will be same as hda7 in linux, (hd0,6) in grub. You can also use PC emulators like VMWare(www.vmware.com) or BOCHS(bochs.sf.net). For more info, dont hesitate to drop a mail. regards Manish Regmi |
From: Manish R. <reg...@gm...> - 2005-03-23 17:06:24
|
The source codes are updated. - All codes now compile without warnings. - mmap now works fine for MAP_ANON - Size reduction using individual .o's to create .a archives. - svrpool implemented as seperate library .c todo: the exec problem still exists... regards Manish |
From: Manish R. <reg...@gm...> - 2005-03-22 17:21:51
|
On Tue, 22 Mar 2005 04:37:38 +0000, =12 =07 <ki...@ho...> wrote: > Really cooool work, though there are still many bugs:) I'm testing some > algorithm in manRiX's kernel, also I fixed some bugs. Once I finished my > job, I will contribute my works. Agagin, good work!:) >=20 > regards. >=20 Thank you very much. (NB: Please send the mails to man...@li...) Subscribe from here -> https://lists.sourceforge.net/mailman/listinfo/manrix-devel regards Manish Regmi |
From: Manish R. <reg...@gm...> - 2005-03-19 01:53:07
|
The last tar ball seems to be corrupted. Uploaded again... regards Manish Regmi |
From: Manish R. <reg...@gm...> - 2005-03-16 12:03:52
|
Hi all, I have updated the both the source codes and Floppy image of ManRiX. The CVS server is not updated. I will do it as soon i get access to Unix/Linux Box. Updates: 1) Source Codes for File Manager. The file manager source code contains VFS code + ext2 fs code + buffer cache code. 2) Sources for ATA compatible Disk Controllers. IT can either coexist with file manager (for speed) or run as a seperate server. Can be configured at compile time. 3) Microkernel: - Dup System Call added. - mmap fixed. Now the address is first allocated from VM manager for Anonymous map. - exit problem fixed. Now the exit works on call during Signal delivery. - exec works (weird behaviour on first page fault). - vfork works perfect (Child guranteed to run first. Parent guranteed to run only after child either do exec or exit.) - fork works (vm design issue; how to handle shadow Objects????) - message Passing; MSG_LONG_RECEIVE added; Now long messages can also be received. - message Passing; MSG_MAP_* problem solved; Message can now be passed through page table mapping. - TLB flushed after each page table manipulation. (thanks to Brenden Trotter) - argc, argv, and env now works for both exec'd programs and modules loaded by grub. (see changelog.txt files...) 4) LIBC: A lot of functions added.(i have not created a changelog)... 5) small programs like init, logd, login (Incomplete). I know the project is going on very slowly. This is what happens with one man Army. What all it takes is TIME. HELP: Any help is highly appriciated in LIBC. There are thousands of functions yet to be written (ANSI + POSIX). Please run the codes and give me feedbacks.... (NOTE: The exec'd process has problem after first page fault. ) regards Manish Regmi |
From: Manish R. <reg...@gm...> - 2005-02-14 06:56:39
|
hello Prakash ji, On Sun, 13 Feb 2005 19:09:38 +0545, Prakash Manandhar <pma...@da...> wrote: > I do not believe in "simply the best", things have to be > simple from the > outside and complicated in the inside to be beautiful. > An OS, and IPC in > particular, are complex by their very nature. very true........... But i measured complexity as relative entity. > I didn't get the point in detail, I will do a bit of study in it and > comment > later on... (perhaps in a week) > > What hardware has Mr. Per-Tore contributed? Most probably TS3400 system (http://www.embeddedx86.com/epc/ts3400-spec-h.html).. > I, myself own a electronic components, embedded design and PCB manufacturing > company, although it is in a state of infancy: check out www.mpworks.com.np > It is just six months old, but we have been in the local embedded market for > two years with other companies. > > If you need more help in hardware terms me and my friends could help out as > we have some embedded design and software experience, and we could even > contribute some more hardware and make PCBs. Wow, nice to know. Keep it up.... Thank you very much for your interest to Help us. Of cource we will be requiring hardwares to test. But For now, rather than hardware help, we need technical help on solving problems (design issue, bugs) because we are out of number. > Since you are into hardware, I guess the model of working > without physical > contact will not work so well anymore. > It could work if you are predominantly software though. Yes that is very true..... but i dont have any experience in Hardwares (electronics) but learning though. But very fond of Computer Architectutre...... I Have to learn a lot of things from you guys. I will visit your Company after my Exam......... > As a footnote, I think the term embedded real-time OS is very very vague. An > embedded system can be as simple as an aquarium thermometer to as complex as > an air-traffic control or missile defense system. > > I think you should first make the vision of the project clear and make a > niche out there, make something that is useful in a number of ways that > existing open source systems lack. Yes, you are very correct. Due to the nature of the design(unixy nature), dynamic property, it is unsuitable for Hard Real Systems. For now we are trying to make soft realtime. Though a very long way to go. And please if you have any suggestions on how to carry out this project, what to add/remove? What kind of vision it should be........... let us know..... thanks |
From: Rajesh R.C <raj...@gm...> - 2005-02-14 06:55:39
|
---------- Forwarded message ---------- From: Rajesh R.C <raj...@gm...> Date: Sun, 13 Feb 2005 22:52:19 -0800 Subject: Re: [Manrix-devel] what are the goals of manrix, is it any different from GNU HURD/Mach To: Prakash Manandhar <pma...@da...> >>I think the term embedded real-time OS is very very vague. I don't think that . Real time means there is property of time constraits i .e hard or soft . OS implements the realtime features like preemptive kernel , realtime scheduling etc and this OS is embedded to any hardware device so this whole makes embedded real-time OS and this type of OS are used for special purpose , industry use to control movement to the space shuttle movements. why not give some glimpse to the site http://www.onesmartclick.com/rtos/rtos.html -- cheers Rajesh Bikram RC -- cheers Rajesh Bikram RC |
From: Prakash M. <pma...@da...> - 2005-02-13 13:25:09
|
Dear Manish-ji, > In the beginning when we started the project, we didn't > have in the > mind that xyz system has aaa defects and we will be > making the better > system than that by removing its defects. I understand completely; I myself have a tendency of starting projects ;-) > > But infact MACH from CMU have few defects. The major > defect is in the > IPC. If you have looked in the Internals of the port > architecture of > Mach, you might have noticed its complexity. I do not believe in "simply the best", things have to be simple from the outside and complicated in the inside to be beautiful. An OS, and IPC in particular, are complex by their very nature. > > Our IPC is very simple and Fast. we have also used some > techniques to > reduce the no of IPC in File IO/Device IO. There are > other features > like Microkernel itself has POSIX interface so UNIX > emulation is > unnecessary. I didn't get the point in detail, I will do a bit of study in it and comment later on... (perhaps in a week) > > MOST important is that we are now starting to make it > Realtime. A > wonderful system called Embeddable POSIX. Thanks to the > Hardware > Contribution by MR Per-Tore Aasestrand of Norway. What hardware has Mr. Per-Tore contributed? I, myself own a electronic components, embedded design and PCB manufacturing company, although it is in a state of infancy: check out www.mpworks.com.np It is just six months old, but we have been in the local embedded market for two years with other companies. If you need more help in hardware terms me and my friends could help out as we have some embedded design and software experience, and we could even contribute some more hardware and make PCBs. Since you are into hardware, I guess the model of working without physical contact will not work so well anymore. It could work if you are predominantly software though. As a footnote, I think the term embedded real-time OS is very very vague. An embedded system can be as simple as an aquarium thermometer to as complex as an air-traffic control or missile defense system. I think you should first make the vision of the project clear and make a niche out there, make something that is useful in a number of ways that existing open source systems lack. Best Regards, jaH. > > regards > Manish Regmi > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products > from real users. > Discover which products truly live up to the hype. Start > reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Manrix-devel mailing list > Man...@li... > https://lists.sourceforge.net/lists/listinfo/manrix- > devel |
From: Manish R. <reg...@gm...> - 2005-02-12 05:16:53
|
hello prakash ji, On Fri, 11 Feb 2005 18:35:59 +0545, Prakash Manandhar <pma...@da...> wrote: > I am not totally clear what the aim of the manrix project is. Is it the > same > as that of GNU HURD or have we found something inadequate in > that project that we are starting afresh? In the beginning when we started the project, we didn't have in the mind that xyz system has aaa defects and we will be making the better system than that by removing its defects. It was started as a hobby and to gain some knowledge and today we have an aim of creating fulling working OS... an Open Source OS project. But infact MACH from CMU have few defects. The major defect is in the IPC. If you have looked in the Internals of the port architecture of Mach, you might have noticed its complexity. Our IPC is very simple and Fast. we have also used some techniques to reduce the no of IPC in File IO/Device IO. There are other features like Microkernel itself has POSIX interface so UNIX emulation is unnecessary. MOST important is that we are now starting to make it Realtime. A wonderful system called Embeddable POSIX. Thanks to the Hardware Contribution by MR Per-Tore Aasestrand of Norway. regards Manish Regmi |