From pedersen at ccsscorp.com Thu Jun 13 00:09:21 2013 From: pedersen at ccsscorp.com (Bill Pedersen) Date: Wed, 12 Jun 2013 18:09:21 -0400 Subject: [FreeVMS] FreeVMS Message-ID: <001401ce67b9$7e464c30$7ad2e490$@ccsscorp.com> Hello, new to the list but interested. And definitely not new to VMS! How does one get information on the current state of FreeVMS. I have visited the freeVMS.net site but find that there is a lot of incompleteness there, links that go to blank pages and such. Given the current upheaval in the VMS community I would like to better understand this environment so as to be able to help promote it and encourage it. Thank, Bill. Bill Pedersen CCSS - Computer Consulting System Services, LLC 211 Ruth Drive Gaffney, SC 29341 Telephone: 864-490-8863 Mobile: 408-892-5204 Facsimile: 206-984-3068 www: www.ccsscorp.com Skype Name: william.a.pedersen LinkedIn Profile: www.linkedin.com/in/billpedersen -------------- next part -------------- An HTML attachment was scrubbed... URL: From joel.bertrand at systella.fr Thu Jun 13 07:43:37 2013 From: joel.bertrand at systella.fr (=?UTF-8?Q?BERTRAND_Jo=C3=ABl?=) Date: Thu, 13 Jun 2013 07:43:37 +0200 Subject: [FreeVMS] FreeVMS In-Reply-To: <001401ce67b9$7e464c30$7ad2e490$@ccsscorp.com> References: <001401ce67b9$7e464c30$7ad2e490$@ccsscorp.com> Message-ID: <6823d292689a27b0003aec2c0ee9d374@systella.fr> Le 13.06.2013 0:09, Bill Pedersen a ?crit?: > Hello, new to the list but interested? Hello, > And definitely not new to VMS! > > How does one get information on the current state of FreeVMS. I have > visited the freeVMS.net site but find that there is a lot of > incompleteness there, links that go to blank pages and such. > > Given the current upheaval in the VMS community I would like to > better > understand this environment so as to be able to help promote it and > encourage it. FreeVMS project was created a long time ago. First kernels (until 0.3) were derivated from Linux kernel (2.4.15 if I remember) and were monolithic. These kernels were bootable but not easely maintenable. 0.4 is rewritten from scratch on a L4 (like Hurd is written on a Mach kernel or MacOS X on NVU). L4 is choosen because it deos not contains unixism. It boots, it contains first memory management subroutines, but pager is missing. Now, FreeVMS is slepping because there is no developers. To be alive, this project need : - a pager ; - some drivers (disk I/O), filesystems... Some code have been written (ODS2/5 for example) for O.3 kernel ; - a swapper ; - some libraries (a real POSIX libc et VMS libraries) ; - some contributers to write documentation and write pages on www.freevms.net. Goal of FreeVMS is to propose a clone of OpenVMS with a good POSIX subsystem. Microkernel (L4) is written in C++ and servers written over L4 are written in procedural C++ too. First arch is amd64. Regards, JKB From mveety at gmail.com Thu Jun 13 07:54:50 2013 From: mveety at gmail.com (Matthew Veety) Date: Thu, 13 Jun 2013 01:54:50 -0400 Subject: [FreeVMS] FreeVMS In-Reply-To: <6823d292689a27b0003aec2c0ee9d374@systella.fr> References: <001401ce67b9$7e464c30$7ad2e490$@ccsscorp.com> <6823d292689a27b0003aec2c0ee9d374@systella.fr> Message-ID: On Jun 13, 2013, at 1:43, BERTRAND Jo?l wrote: > Le 13.06.2013 0:09, Bill Pedersen a ?crit : >> Hello, new to the list but interested? > > Hello, > >> And definitely not new to VMS! >> >> How does one get information on the current state of FreeVMS. I have >> visited the freeVMS.net site but find that there is a lot of >> incompleteness there, links that go to blank pages and such. >> >> Given the current upheaval in the VMS community I would like to better >> understand this environment so as to be able to help promote it and >> encourage it. > > FreeVMS project was created a long time ago. First kernels (until 0.3) were derivated from Linux kernel (2.4.15 if I remember) and were monolithic. These kernels were bootable but not easely maintenable. > > 0.4 is rewritten from scratch on a L4 (like Hurd is written on a Mach kernel or MacOS X on NVU). L4 is choosen because it deos not contains unixism. It boots, it contains first memory management subroutines, but pager is missing. > > Now, FreeVMS is slepping because there is no developers. To be alive, this project need : > - a pager ; > - some drivers (disk I/O), filesystems... Some code have been written (ODS2/5 for example) for O.3 kernel ; > - a swapper ; > - some libraries (a real POSIX libc et VMS libraries) ; > - some contributers to write documentation and write pages on www.freevms.net. > > Goal of FreeVMS is to propose a clone of OpenVMS with a good POSIX subsystem. Microkernel (L4) is written in C++ and servers written over L4 are written in procedural C++ too. First arch is amd64. > > Regards, > > JKB Is development even going on still? The project seems really dead to me. Also why didn't we write a kernel ourselves? From joel.bertrand at systella.fr Thu Jun 13 08:11:16 2013 From: joel.bertrand at systella.fr (=?UTF-8?Q?BERTRAND_Jo=C3=ABl?=) Date: Thu, 13 Jun 2013 08:11:16 +0200 Subject: [FreeVMS] FreeVMS In-Reply-To: References: <001401ce67b9$7e464c30$7ad2e490$@ccsscorp.com> <6823d292689a27b0003aec2c0ee9d374@systella.fr> Message-ID: <773dee3f7dee8121993e005bd4370213@systella.fr> Le 13.06.2013 7:54, Matthew Veety a ?crit?: > On Jun 13, 2013, at 1:43, BERTRAND Jo?l > wrote: > >> Le 13.06.2013 0:09, Bill Pedersen a ?crit : >>> Hello, new to the list but interested? >> >> Hello, >> >>> And definitely not new to VMS! >>> >>> How does one get information on the current state of FreeVMS. I >>> have >>> visited the freeVMS.net site but find that there is a lot of >>> incompleteness there, links that go to blank pages and such. >>> >>> Given the current upheaval in the VMS community I would like to >>> better >>> understand this environment so as to be able to help promote it and >>> encourage it. >> >> FreeVMS project was created a long time ago. First kernels (until >> 0.3) were derivated from Linux kernel (2.4.15 if I remember) and were >> monolithic. These kernels were bootable but not easely maintenable. >> >> 0.4 is rewritten from scratch on a L4 (like Hurd is written on a >> Mach kernel or MacOS X on NVU). L4 is choosen because it deos not >> contains unixism. It boots, it contains first memory management >> subroutines, but pager is missing. >> >> Now, FreeVMS is slepping because there is no developers. To be >> alive, this project need : >> - a pager ; >> - some drivers (disk I/O), filesystems... Some code have been >> written (ODS2/5 for example) for O.3 kernel ; >> - a swapper ; >> - some libraries (a real POSIX libc et VMS libraries) ; >> - some contributers to write documentation and write pages on >> www.freevms.net. >> >> Goal of FreeVMS is to propose a clone of OpenVMS with a good POSIX >> subsystem. Microkernel (L4) is written in C++ and servers written over >> L4 are written in procedural C++ too. First arch is amd64. >> >> Regards, >> >> JKB > > Is development even going on still? The project seems really dead to > me. Project is sleeping as it need some developers. > Also why didn't we write a kernel ourselves? I don't understand your question. Do you want to reuse an existing kernel or to write a kernel without L4 ? JKB From joel.bertrand at systella.fr Thu Jun 13 11:44:57 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Thu, 13 Jun 2013 11:44:57 +0200 Subject: [FreeVMS] Wanted Message-ID: <51B99499.6010106@systella.fr> Hello, I have checked this morning and there are more than 1000 subscribers to this mailing list (even with hp.com mail address). HP says that, today, it remains only 2500 OpenVMS customers. Thus, a lot of VMS users read this mailing list. Development was stalled for two years because I don't want to continue alone. I'll restart this project if and only if new contributers support parts of this OS. Haiku, ReactOS, Linux, *BSD are much more complex than a clone of VMS over microkernel and are actively developed for years. If we cannot found some developers to participate to this project, I suppose that OpenVMS will be definitely dead when HP will stop support. I have shown that it is possible to write a kernel as a sum if L4 servers. 0.4 boots until process management but as pager is missing, it cannot launch tasks in virtual memory (sigma0 only maps physical memory in virtual memory without address translation). Now, HP has announced OpenVMS death. I don't think that OpenVMS will be opensourced, and even if HP opensources OpenVMS, there will be a lot of stuff to obtain a usable operating system (Bliss, Macro32 and 64 have to be ported on new architectures). I'm not sure that rewrite a new OS is more difficult. Today, FreeVMS 0.4 requires : - a pager (FreeVMS/sources/freevms/vm/vm_pager.c) - some drivers (console, hard disk, network) - a swapper - a command line - some volunteers to keep webpages alive. If anyone is interested, please answer to this mail. With more than 5 new and active developers, I think we can restart this project. Regards, JKB From rmctwo at gmail.com Thu Jun 13 14:53:03 2013 From: rmctwo at gmail.com (Renee) Date: Thu, 13 Jun 2013 08:53:03 -0400 Subject: [FreeVMS] Wanted In-Reply-To: <51B99499.6010106@systella.fr> References: <51B99499.6010106@systella.fr> Message-ID: <000401ce6834$f1ead450$d5c07cf0$@gmail.com> Hi joel, I have worked in VMS development for about 4.5 years in Nashua and did HBS. I'd like to help. Renee -----Original Message----- From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of BERTRAND Jo?l Sent: Thursday, June 13, 2013 5:45 AM To: freevms at systella.fr Subject: [FreeVMS] Wanted Hello, I have checked this morning and there are more than 1000 subscribers to this mailing list (even with hp.com mail address). HP says that, today, it remains only 2500 OpenVMS customers. Thus, a lot of VMS users read this mailing list. Development was stalled for two years because I don't want to continue alone. I'll restart this project if and only if new contributers support parts of this OS. Haiku, ReactOS, Linux, *BSD are much more complex than a clone of VMS over microkernel and are actively developed for years. If we cannot found some developers to participate to this project, I suppose that OpenVMS will be definitely dead when HP will stop support. I have shown that it is possible to write a kernel as a sum if L4 servers. 0.4 boots until process management but as pager is missing, it cannot launch tasks in virtual memory (sigma0 only maps physical memory in virtual memory without address translation). Now, HP has announced OpenVMS death. I don't think that OpenVMS will be opensourced, and even if HP opensources OpenVMS, there will be a lot of stuff to obtain a usable operating system (Bliss, Macro32 and 64 have to be ported on new architectures). I'm not sure that rewrite a new OS is more difficult. Today, FreeVMS 0.4 requires : - a pager (FreeVMS/sources/freevms/vm/vm_pager.c) - some drivers (console, hard disk, network) - a swapper - a command line - some volunteers to keep webpages alive. If anyone is interested, please answer to this mail. With more than 5 new and active developers, I think we can restart this project. Regards, JKB _______________________________________________ FreeVMS mailing list FreeVMS at rayleigh.systella.fr https://www.systella.fr/cgi-bin/mailman/listinfo/freevms From joel.bertrand at systella.fr Thu Jun 13 17:35:48 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Thu, 13 Jun 2013 17:35:48 +0200 Subject: [FreeVMS] Wanted In-Reply-To: <000401ce6834$f1ead450$d5c07cf0$@gmail.com> References: <51B99499.6010106@systella.fr> <000401ce6834$f1ead450$d5c07cf0$@gmail.com> Message-ID: <51B9E6D4.6040309@systella.fr> Renee wrote: > Hi joel, > > I have worked in VMS development for about 4.5 years in Nashua and did HBS. > I'd like to help. Thanks a lot. You're welcome. Today, some modules can be directly loaded into memory by kickstart (FreeVMS/sources/kernel/util/kickstart). To boot, grub loads kickstart from a disk (including ODS/2 disk) and load into memory several modules : - x86-kernel (L4) - sigma0 - freevms.sys (L4 root task) - pager.sys (root task pager) - init.exe This boot procedure works fine. It works fine but pager.sys does not do anything. Do you think you could write a VMS like pager ? I will put on freevms.net all documentations about L4/X2 microkernel. I have tried to rebuild last git this afternoon, I have to patch L4 to build microkernel with last gcc. I think I'll have more time next week end. Regards, JKB From denis.reichert at laposte.net Thu Jun 13 20:23:11 2013 From: denis.reichert at laposte.net (Denis Reichert) Date: Thu, 13 Jun 2013 19:23:11 +0100 Subject: [FreeVMS] Wanted In-Reply-To: <51B99499.6010106@systella.fr> References: <51B99499.6010106@systella.fr> Message-ID: <51BA0E0F.3060209@laposte.net> Une pi?ce jointe HTML a ?t? nettoy?e... URL: From rmctwo at gmail.com Thu Jun 13 20:52:42 2013 From: rmctwo at gmail.com (Renee) Date: Thu, 13 Jun 2013 14:52:42 -0400 Subject: [FreeVMS] Wanted In-Reply-To: <51BA0E0F.3060209@laposte.net> References: <51B99499.6010106@systella.fr> <51BA0E0F.3060209@laposte.net> Message-ID: <000801ce6867$30131440$90393cc0$@gmail.com> Macro32 was part of VMS. I was not around when 64 bit vms was. Bliss32 is on the User pack. Renee From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of Denis Reichert Sent: Thursday, June 13, 2013 2:23 PM To: FreeVMS mailing list Subject: Re: [FreeVMS] Wanted Le 13/06/2013 10:44, BERTRAND Jo?l a ?crit : Hello, I have checked this morning and there are more than 1000 subscribers to this mailing list (even with hp.com mail address). HP says that, today, it remains only 2500 OpenVMS customers. Thus, a lot of VMS users read this mailing list. Development was stalled for two years because I don't want to continue alone. I'll restart this project if and only if new contributers support parts of this OS. Haiku, ReactOS, Linux, *BSD are much more complex than a clone of VMS over microkernel and are actively developed for years. If we cannot found some developers to participate to this project, I suppose that OpenVMS will be definitely dead when HP will stop support. I have shown that it is possible to write a kernel as a sum if L4 servers. 0.4 boots until process management but as pager is missing, it cannot launch tasks in virtual memory (sigma0 only maps physical memory in virtual memory without address translation). Now, HP has announced OpenVMS death. I don't think that OpenVMS will be opensourced, and even if HP opensources OpenVMS, there will be a lot of stuff to obtain a usable operating system (Bliss, Macro32 and 64 have to be ported on new architectures). I'm not sure that rewrite a new OS is more difficult. Today, FreeVMS 0.4 requires : - a pager (FreeVMS/sources/freevms/vm/vm_pager.c) - some drivers (console, hard disk, network) - a swapper - a command line - some volunteers to keep webpages alive. If anyone is interested, please answer to this mail. With more than 5 new and active developers, I think we can restart this project. Regards, JKB _______________________________________________ FreeVMS mailing list FreeVMS at rayleigh.systella.fr https://www.systella.fr/cgi-bin/mailman/listinfo/freevms Hello I worked as a low level system programmer a long time ago but when I look today at LIB$ sources, F11 assembler manual, all this is still familiar to me. I have never understood why ODS-like file versioning is not implemented into recent filesystems. About web pages, is it not better to open a WordPress blog which is more modern, attractive, interactive and collaborative ? Regards Denis -------------- next part -------------- An HTML attachment was scrubbed... URL: From joel.bertrand at systella.fr Thu Jun 13 20:58:12 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Thu, 13 Jun 2013 20:58:12 +0200 Subject: [FreeVMS] Wanted In-Reply-To: <51BA0E0F.3060209@laposte.net> References: <51B99499.6010106@systella.fr> <51BA0E0F.3060209@laposte.net> Message-ID: <51BA1644.4060702@systella.fr> > Hello > I worked as a low level system programmer a long time ago but when I > look today at LIB$ sources, F11 assembler manual, all this is still > familiar to me. > I have never understood why ODS-like file versioning is not implemented > into recent filesystems. > About web pages, is it not better to open a WordPress blog which is more > modern, attractive, interactive and collaborative ? For me, main webpages cannot be a blog or a wiki. Actual webpages are written with spip, that is a multiuser and multilinguage CRM. If you want to modify a page, you need an account. On each page, you can add a public or private space and there are several internal forums. From joel.bertrand at systella.fr Thu Jun 13 23:53:25 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Thu, 13 Jun 2013 23:53:25 +0200 Subject: [FreeVMS] FreeVMS volunteers Message-ID: <51BA3F55.7020502@systella.fr> John, I have receive your mail, but I think you have sent this mail to a wrong address (to mailman bounce address ?). You're welcome. If you know internal VMS structures, your knowledge will be a great help to design the new OS. I think that all documentations should be written and accessible on web pages. I can open for you an access. Maybe you don't know spip. It's a collaborative platform. You can prepare several articles on private pages, all articles will be read by some reviewers and will be published after acceptation. Regards, JKB From joel.bertrand at systella.fr Fri Jun 14 11:58:42 2013 From: joel.bertrand at systella.fr (=?UTF-8?B?QkVSVFJBTkQgSm/Dq2w=?=) Date: Fri, 14 Jun 2013 11:58:42 +0200 Subject: [FreeVMS] Auto-discard notification In-Reply-To: References: Message-ID: <51BAE952.8010106@systella.fr> >On Thu, Jun 13, 2013 at 11:44:57AM +0200, BERTRAND Jo?l wrote: >> Today, FreeVMS 0.4 requires : >> - a pager (FreeVMS/sources/freevms/vm/vm_pager.c) >> - some drivers (console, hard disk, network) >> - a swapper >> - a command line >> - some volunteers to keep webpages alive. >> >I will be happy to help somehow. But I'm not a great VMS expert, >and I think I will be only able to start writing only some >drivers and/or propose a hardware abstraction ala NetBSD (for >example). > >Cheers, I'm not sure that FreeVMS requires today great VMS experts. I'm currently trying to update git repository to push all modifications I have made since 2010. I think that this week-end, you will able to find a disk image that boots under qemu and you will see if you can help this project. I will upload L4/X2 documentation too. Here is console output (with some comments) : riemann:[~/openvms] > qemu-system-x86_64 -hdc freevms.img -smp 1 -serial stdio -m 128M -k fr -display none // Grub is loading kickstart. Kickstart loads into memory several // modules. KickStart 0.12.56 for FreeVMS Detected multiboot compliant loader Reserving 8MB for kernel memory L4/X2 kernel (0x0011b000-0x0018c00a) => 0x0095a000 (0x0011c000-0x00175510) -> 0x00800000-0x00859510 (0x00176000-0x0017de70) -> 0x0095a000-0x00961e70 sigma0 (0x0018d000-0x001a6b30) => 0x00080000 (0x0018d0c0-0x00193080) -> 0x00080000-0x00085fc0 vmskernel.sys (0x001a7000-0x001f4775) => 0x01003d10 (0x001a70b0-0x00220f18) -> 0x010000b0-0x01079f18 Launching kernel ... // Kickstart launchs L4/X2 microkernel (kernel mode) L4Ka::Pistachio - built on Dec 7 2010 08:23:14 by bertrand at cauchy using gcc version 4.4.5 20100728 (prerelease) // starting L4 root server over sigma0 (idempotent memory mapper). >>> FreeVMS 0.4.0 (R) %SYSBOOT-I-SYSBOOT, leaving kernel privileges %SYSBOOT-I-SYSBOOT, launching FreeVMS kernel with executive privileges %SYSBOOT-I-SYSBOOT, booting main processor %SYSBOOT-I-SYSBOOT, computing page size: 4096 bytes %SYSBOOT-I-SYSBOOT, CPU0 EXTFREQ=1001 MHz, INTFREQ=1648 MHz %SYSBOOT-I-SYSBOOT, parsing command line: /boot/vmskernel.sys root=dqa0.0 console=opa0 nodbg$virtual_memory dbg$sys_pagefault dbg$vms_pagefault %SYSBOOT-I-SYSBOOT, selecting root device: DQA0.0 %SYSBOOT-I-SYSBOOT, selecting console device: OPA0 %SYSBOOT-I-SYSBOOT, initializing memory %MEM-I-AREA, $0000000000000000 - $000000000007FFFF: physical memory %MEM-I-AREA, $0000000000086000 - $000000000009FBFF: physical memory %MEM-I-AREA, $0000000000100000 - $0000000000108FFF: physical memory %MEM-I-AREA, $000000000010B000 - $00000000001F4FFF: physical memory %MEM-I-AREA, $0000000000221000 - $00000000007FFFFF: physical memory %MEM-I-AREA, $000000000095A000 - $0000000000FFFFFF: physical memory %MEM-I-AREA, $0000000001010000 - $00000000075FFFFF: physical memory %MEM-I-AREA, $0000000007E00000 - $0000000007FFDFFF: physical memory %MEM-I-AREA, $0000000000001000 - $FFFFFEFFFFFFFFFF: virtual memory %MEM-I-AREA, $000000000009FC00 - $00000000000FFFFF: mapped IO %MEM-I-AREA, $0000000007FFE000 - $FFFFFFFFFFFFFFFF: mapped IO %MEM-I-AREA, $0000000007600000 - $0000000007DFFFFF: reserved by kernel %MEM-I-AREA, $0000000000800000 - $0000000000859FFF: reserved by kernel %MEM-I-AREA, $000000000085A000 - $0000000000959FFF: reserved by kernel %MEM-I-AREA, $0000000000832000 - $0000000000832FFF: reserved by kernel %MEM-I-AREA, $FFFFFFFFFFC00000 - $FFFFFFFFFFC00FFF: reserved by kernel %MEM-I-AREA, $00000000FEC00000 - $00000000FEC00FFF: reserved by kernel %MEM-I-AREA, $0000000000080000 - $0000000000085FC0: reserved by kernel %MEM-I-AREA, $0000000000080000 - $0000000000084817: modules %MEM-I-AREA, $0000000000084818 - $0000000000084837: kernel %MEM-I-AREA, $00000000010000B0 - $000000000100EA77: modules %MEM-I-AREA, $000000000100EA78 - $000000000100F257: kernel %MEM-I-AREA, $00000000001F5000 - $000000000020120A: modules %MEM-I-AREA, $0000000000202000 - $000000000020B97A: modules %MEM-I-AREA, $000000000020C000 - $0000000000212C3A: modules %MEM-I-AREA, $0000000000213000 - $0000000000219C3A: modules %MEM-I-AREA, $000000000021A000 - $0000000000220C3A: modules %MEM-I-AREA, $000000000010A000 - $000000000010AFFF: boot information %MEM-I-AREA, $0000000000109000 - $000000000010933F: boot information %SYSBOOT-I-SYSBOOT, reserving memory for preloaded objects %MEM-I-ALLOC, allocating $0000000000080000 - $0000000000084817 %MEM-I-ALLOC, allocating $0000000000084818 - $0000000000084837 %MEM-I-ALLOC, allocating $00000000010000B0 - $000000000100EA77 %MEM-I-ALLOC, allocating $000000000100EA78 - $000000000100F257 %MEM-I-ALLOC, allocating $00000000001F5000 - $000000000020120A %MEM-I-ALLOC, allocating $0000000000202000 - $000000000020B97A %MEM-I-ALLOC, allocating $000000000020C000 - $0000000000212C3A %MEM-I-ALLOC, allocating $0000000000213000 - $0000000000219C3A %MEM-I-ALLOC, allocating $000000000021A000 - $0000000000220C3A %MEM-I-ALLOC, allocating $000000000010A000 - $000000000010AFFF %MEM-I-ALLOC, allocating $0000000000109000 - $000000000010933F %MEM-I-F_ALLOC, bootstrapping Fpage allocator at virtual addresses %MEM-I-F_ALLOC, $0000000000001000 - $000000000007FFFF %MEM-I-S_ALLOC, bootstrapping Slab allocator at physical addresses %MEM-I-S_ALLOC, $0000000000000000 - $000000000007FFFF %MEM-I-FREE, freeing region $0000000000086000 - $000000000009EFFF %MEM-I-FREE, freeing region $0000000000100000 - $0000000000108FFF %MEM-I-FREE, freeing region $000000000010B000 - $00000000001F4FFF %MEM-I-FREE, freeing region $0000000000221000 - $00000000007FFFFF %MEM-I-FREE, freeing region $000000000095A000 - $0000000000FFFFFF %MEM-I-FREE, freeing region $0000000001010000 - $00000000075FFFFF %MEM-I-FREE, freeing region $0000000007E00000 - $0000000007FFDFFF %MEM-I-VM_ALLOC, adding $0000000000085000 - $0000000000108FFF to VM allocator %MEM-I-VM_ALLOC, adding $000000000010B000 - $00000000001F4FFF to VM allocator %MEM-I-VM_ALLOC, adding $0000000000221000 - $0000000000FFFFFF to VM allocator %MEM-I-VM_ALLOC, adding $0000000001010000 - $FFFFFEFFFFFFFFFF to VM allocator %JOBCTL-I-MAX_THRDS, setting maximal concurrent threads to 262085 %DEV-I-INIT, initializing devices tree %NSR-I-INIT, initializing names tree %SYSBOOT-I-SYSBOOT, spawning PAGER.SYS with executive privileges %SYSBOOT-I-SYSBOOT, creating PAGER.SYS UTCB pages %SYSBOOT-I-SYSBOOT, reserving 4096 bytes for 4 pager threads // PAGER.SYS is loaded by FreeVMS kernel in the same memory space. // Pagefaults come from memory requests sent by $3C process id // (PAGER.SYS) to freevms kernel pagefault handler. See // http://www.freevms.net/article35.html %SYS-I-PAGEFLT, pagefault request from $3C at $0000000000800200 %SYS-I-PAGEFLT, pagefault request from $3C at $0000000000007FE8 %SYS-I-PAGEFLT, pagefault request from $3C at $0000000000801C50 %SYS-I-PAGEFLT, pagefault request from $3C at $00000000008023C8 %SYS-I-PAGEFLT, pagefault request from $3C at $0000000000300000 %SYS-I-PAGEFLT, pagefault request from $3C at $000000000100C598 // All ELF segments from PAGER.SYS have been loaded, PAGER.SYS is // started. Problem : PAGER.SYS does not do anything. %RUN-S-STARTED, PAGER.SYS process started %PAGER-I-SWPADDR, setting swapper base address at $0000000007FFE000 %PAGER-I-SWPSIZE, setting swap size to 0 byte // Here, FreeVMS kernel has to start some modules like disk drivers, // console driver... But to load these modules, PAGER.SYS has to be // written to offer real memory mapping, not idempotent mapping. // PAGER.SYS is in sources/freevms/vm %RUN-S-STOPPED, PAGER.SYS process stopped qemu: terminating on signal 2 Before trying to write drivers, next step will be to write a minimal PAGER.SYS. I can help you to do that if you want. Regards, JKB From joel.bertrand at systella.fr Fri Jun 14 13:04:53 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Fri, 14 Jun 2013 13:04:53 +0200 Subject: [FreeVMS] Auto-discard notification In-Reply-To: <51BAE952.8010106@systella.fr> References: <51BAE952.8010106@systella.fr> Message-ID: <51BAF8D5.6030303@systella.fr> Bruno, please use your real mail address. You can only send messages with your mailman's registered address. That being said, I will patch L4/X2. I have sent some patches to Ka devs a long time ago I have never pushed into git tree. For virtual memory, don't worry, FreeVMS only requires in a first time a pagefault handler that is able to give virtual memory to child process (and that is able to associate physical to virtual pages and to process ID). Regards, JKB From joel.bertrand at systella.fr Sun Jun 16 17:42:32 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Sun, 16 Jun 2013 17:42:32 +0200 Subject: [FreeVMS] FreeVMS disk image update In-Reply-To: <02c201ce69c7$229d5df0$67d819d0$@ccsscorp.com> References: <02c201ce69c7$229d5df0$67d819d0$@ccsscorp.com> Message-ID: <51BDDCE8.9010807@systella.fr> Hello, I have uploaded this afternoon a qemu image with a recent L4/X2 kernel (on http://www.freevms.net), the last vmskernel.sys and some modifications to boot this system with grub2 instead of grub-lecacy. This kernel supports until 4 processors. System boots, starts PAGER.SYS that doesn't do anything and stops. Regards, JKB From mveety at gmail.com Sun Jun 16 17:49:47 2013 From: mveety at gmail.com (Matthew Veety) Date: Sun, 16 Jun 2013 11:49:47 -0400 Subject: [FreeVMS] FreeVMS disk image update In-Reply-To: <51BDDCE8.9010807@systella.fr> References: <02c201ce69c7$229d5df0$67d819d0$@ccsscorp.com> <51BDDCE8.9010807@systella.fr> Message-ID: What exactly needs to be done on the system? On Jun 16, 2013, at 11:42, BERTRAND Jo?l wrote: > Hello, > > I have uploaded this afternoon a qemu image with a recent L4/X2 kernel (on http://www.freevms.net), the last vmskernel.sys and some modifications to boot this system with grub2 instead of grub-lecacy. This kernel supports until 4 processors. System boots, starts PAGER.SYS that doesn't do anything and stops. > > Regards, > > JKB > _______________________________________________ > FreeVMS mailing list > FreeVMS at rayleigh.systella.fr > https://www.systella.fr/cgi-bin/mailman/listinfo/freevms From pedersen at ccsscorp.com Sun Jun 16 20:42:10 2013 From: pedersen at ccsscorp.com (Bill Pedersen) Date: Sun, 16 Jun 2013 14:42:10 -0400 Subject: [FreeVMS] UserMode VMS on *Nix. In-Reply-To: <51BDFB12.8000406@encompasserve.org> References: <02c201ce69c7$229d5df0$67d819d0$@ccsscorp.com> <51BDDCE8.9010807@systella.fr> <51BDEF1E.7040807@sneddon.id.au> <51BDFB12.8000406@encompasserve.org> Message-ID: <001501ce6ac1$36d600b0$a4820210$@ccsscorp.com> As far as a tool for collaboration I think this is decent and it can be "private": http://www.google.com/sites/help/intl/en/overview.html It is not as good as Google Wave as far as interactive collaboration but it will give us a location where we can have a discussion and also cooperate in the development of ideas. Bill. Bill Pedersen CCSS - Computer Consulting System Services, LLC 211 Ruth Drive Gaffney, SC 29341 Telephone: 864-490-8863 Mobile: 408-892-5204 Facsimile: 206-984-3068 www: www.ccsscorp.com Skype Name: william.a.pedersen LinkedIn Profile: www.linkedin.com/in/billpedersen -----Original Message----- From: John E. Malmberg [mailto:malmberg at Encompasserve.org] Sent: Sunday, June 16, 2013 1:51 PM To: Tim Sneddon Cc: BERTRAND Jo?l; Bill Pedersen; Keith Parris; Fr?d?ric BOYER; freevms at systella.fr; Bruno Ducrot Subject: UserMode VMS on *Nix. On 6/16/2013 12:00 PM, Tim Sneddon wrote: Tim, I am basically in full agreement with your analysis. I chose Linux over BSD simply because of perceived market share, and the knowledge that LAT and DECNET are available in some state. I would want a version that runs on my current laptop as a VM under virtualbox, and one that I could run on one of the desktop systems that I need to repair. > The real killer will be emulators. Why move to the "new VMS" when the > "real VMS" can be run on an emulator faster than real hardware anyway? Exactly. But the emulators are not yet faster than the high end hardware though. But that is only a matter of time. Basically the existing VMS commercial users that can use emulators are going to use them. The ones that can not are already preparing to move off of VMS. The ones that move to Linux based emulators or to Linux may adopt standalone features that augment them from a project like what we are investigating. So that and hobbyist is probably our target market. So I think that we need to have a list of deliverable packages that can be linked together. I think that we should bundle an open source emulator into it. SimH/VAX is stable. But I do not know about ES-40. Is it usable at all? There are hacks that we can make to the emulator and to VMS running on it to make it run even better. And you can bet that any hacks that we developed will be picked up by the commercial vendors. > Lastly, I think we need to pull together a list of absolute base line > goals of the project and start working out from that. I made my > project decisions based on quite a bit of research I did personally > over a few months (between work and everything else...). I am happy > to re-visit all this with a new collection of minds. > > These are the first two goals I would like to put forward: > > * User-mode public API compatibility. Is the goal to be able to build any program on HybridVMS and also have it work on a real VMS system? My take is no. This would be like a 10.x API, where old programs could be built on it, as a forward migration. There are some obvious bugs in the system services. I would prefer to clean them up, but provide a compile time macro to support the incorrect interface to make them cleaner. I would tend to implement system services in an object oriented way with a backward compatibility layer. > > * Open source (preferably BSD or GPLv3) licensed source code. Curl uses a more unrestricted open source license than BSD or lGPLv3. * *Nix/VMS interoperability. NFS/NTP/ODS2/ODS5/LAT/DECNET etc. Is there a google docs tool that could be used to help organize these options? Does anyone have a list of existing VMS compatible packages on Linux and BSD that can be used either as a base or to help decide on which platform? Regards, -John From joel.bertrand at systella.fr Sun Jun 16 23:09:35 2013 From: joel.bertrand at systella.fr (=?UTF-8?B?QkVSVFJBTkQgSm/Dq2w=?=) Date: Sun, 16 Jun 2013 23:09:35 +0200 Subject: [FreeVMS] FreeVMS disk image update In-Reply-To: References: <02c201ce69c7$229d5df0$67d819d0$@ccsscorp.com> <51BDDCE8.9010807@systella.fr> Message-ID: <51BE298F.4070301@systella.fr> Matthew Veety a ?crit : > What exactly needs to be done on the system? In a first time, memory management. The first mapping over L4 is idempotent (virtual address are directly mapped on pysical ones) and is only used to start root task (freevms.sys). With this memory management, system needs IO drivers and process management. L4/X2 uses threads and address space, but there is no system to associate address space and thread to process ID ? la VMS. In a third time, we must write all basic VMS library and port newlib to provide a real POSIX compatibility. Of course, we can discuss about a more precise roadmap. Regards, JKB From joel.bertrand at systella.fr Sun Jun 16 23:29:18 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Sun, 16 Jun 2013 23:29:18 +0200 Subject: [FreeVMS] FreeVMS disk image update In-Reply-To: <51BDEF1E.7040807@sneddon.id.au> References: <02c201ce69c7$229d5df0$67d819d0$@ccsscorp.com> <51BDDCE8.9010807@systella.fr> <51BDEF1E.7040807@sneddon.id.au> Message-ID: <51BE2E2E.6010101@systella.fr> Tim Sneddon a ?crit : > On 16/06/2013 11:42 PM, BERTRAND Jo?l wrote: >> Hello, >> >> I have uploaded this afternoon a qemu image with a recent L4/X2 kernel >> (on http://www.freevms.net), the last vmskernel.sys and some >> modifications to boot this system with grub2 instead of grub-lecacy. >> This kernel supports until 4 processors. System boots, starts >> PAGER.SYS that doesn't do anything and stops. >> > Hi Guys, > > There have been a number of posts going backwards and forwards and > keeping track of all the different points is a bit difficult, so I > thought I might just summarize my thoughts regarding some of the points. > > Before coming up with my OpenBSD based plan I had looked at L4. There > are lots of good reasons for going with L4. > > 1. VMS on Mach was already done. Some of the high level decisions made > were quite good are a discussed in a paper submitted to USENIX. This > would give an implementer a clear direction. > > 2. L4 does have a hypervisor. It is part of a related project and I > believe it could certainly be used. It is called NOVA. > > 3. Dresden University of Technology has been putting heaps of effort > into L4 in the form of Fiasco.OC, > http://www.inf.tu-dresden.de/index.php?node_id=2697. > They provide quite > decent supporting libraries to get projects off the ground. When we have choosen L4 four years ago, we have choosen L4Ka, not Fiasco, as L4Ka API was better than L4/Fiasco one. Fiasco comes with L4RE, but this toolkit needs corba and some other technologies. If I remember L4Ka was also designed to provide very short IPCs. > 4. Linux drivers could likely be used in a shell process that presents > the correct environment to the driver. With L4, each driver can run in its own address space (and of course in a separated thread). > However, while that all sounds great. This was not something that I > could easily handle on my own and so I made the decisions, related to my > project that I would only support user mode public interfaces. Don't > bother with presenting four modes. This is a great design feature of > VMS, but not critical to get people with user mode applications off the > ground. VMS engineering have made the same decisions when supporting > code between VAX, Alpha and I64. So, I did the same. There is also a lot > less work in writing a bunch of libraries that provide a supported call > interfaces, rather than an entire operating system. > > My feeling is that most people who are looking for somewhere to go are > likely unconcerned with whether or not the shell runs in supervisor mode > or if RMS runs in exec mode. I think that modifying something like BSD > UNIX to support some underlying features, like logicals and ASTs and > then handling everything else with a compat package will be > comparatively easier to implement. The other things is that all that > UNIX compatibility that the masses are begging for is right there! Sure, but Linux or xBSD kernels are monolithic. Thus, you have to patch mainstream kernel (we have try until 0.3 FreeVMS kernel). It's a huge work too. With a L4 kernel, you only have to know root task's API to write a new kernel that cannot crash your running system (it runs as a separate task in a separate address space). Critical tasks are only root task, its pager and pagefault handler. > These are the first two goals I would like to put forward: > > * User-mode public API compatibility. > > * Open source (preferably BSD or GPLv3) licensed source code. Regards, JKB PS: if you send mail to freevms at systella.fr, you must subsribe to the list. From johann at myrkraverk.com Mon Jun 17 02:27:51 2013 From: johann at myrkraverk.com (Johann 'Myrkraverk' Oskarsson) Date: Mon, 17 Jun 2013 00:27:51 +0000 Subject: [FreeVMS] Wanted In-Reply-To: <51B99499.6010106@systella.fr> References: <51B99499.6010106@systella.fr> Message-ID: Hi, On Thu, Jun 13, 2013 at 9:44 AM, BERTRAND Jo?l wrote: > If anyone is interested, please answer to this mail. With more than > 5 new and active developers, I think we can restart this project. I have some experience with VMS application programming, mostly in C but some in Fortran. I also have experience with direct hardware programming (various platforms) and device driver development for Illumos/Solaris. I'd like to help but at the moment the time I can spend on the project is *extremely* limited. -- Johann I'm not from the internet, I just work there. From rmctwo at gmail.com Mon Jun 17 15:36:03 2013 From: rmctwo at gmail.com (Renee) Date: Mon, 17 Jun 2013 09:36:03 -0400 Subject: [FreeVMS] DCL Message-ID: <00cb01ce6b5f$9d013410$d7039c30$@gmail.com> Has anyone considered DCL or is it too early in the process? Also being a real DECcie I just realized that I don't know any C. How badly will this hurt? Renee -------------- next part -------------- An HTML attachment was scrubbed... URL: From joel.bertrand at systella.fr Mon Jun 17 23:42:55 2013 From: joel.bertrand at systella.fr (=?windows-1252?Q?BERTRAND_Jo=EBl?=) Date: Mon, 17 Jun 2013 23:42:55 +0200 Subject: [FreeVMS] DCL In-Reply-To: <00cb01ce6b5f$9d013410$d7039c30$@gmail.com> References: <00cb01ce6b5f$9d013410$d7039c30$@gmail.com> Message-ID: <51BF82DF.4020804@systella.fr> Renee a ?crit : > Has anyone considered DCL or is it too early in the process? To early in the process. We need to obtain a running kernel with some IO capabilities before trying to wrtie a shell. > Also being a real DECcie I just realized that I don?t know any C. How > badly will this hurt? Regards, JKB From joel.bertrand at systella.fr Mon Jun 17 23:48:45 2013 From: joel.bertrand at systella.fr (=?windows-1252?Q?BERTRAND_Jo=EBl?=) Date: Mon, 17 Jun 2013 23:48:45 +0200 Subject: [FreeVMS] FW: DCL In-Reply-To: <01dd01ce6b70$09ed9f40$1dc8ddc0$@ccsscorp.com> References: <00cb01ce6b5f$9d013410$d7039c30$@gmail.com> <01dd01ce6b70$09ed9f40$1dc8ddc0$@ccsscorp.com> Message-ID: <51BF843D.8080307@systella.fr> Bill Pedersen a ?crit : > Renee: > > While it would be nice to think we as a team could support multiple > languages right off the bat this is very unlikely. > > That said C and or C++ are going to have to be the primary > implementation languages just because of their availability in general > and the fact that many folks have them as a skill set. > > I am fully aware of your antithetical response to C based upon its > origins (Unix) but it does not mean it cannot be used in a fashion which > is consistent with the needs of the project. Just because you can > terminate a string with a Null does not mean that is the best way to > define strings for the OS?s usage ? descriptors are probably more > effective. Likewise not allowing IO to go on unchecked ? validating > overflow conditions to prevent intrusions is very important. Null terminated string is only a way to implement string in C. In FreeVMS, we have defined a string descriptor and all string manipulations use it: struct vms$string { vms$pointer length; vms$pointer length_trim; unsigned char *c; }; JKB From remi.chateauneu at gmail.com Mon Jun 17 23:56:11 2013 From: remi.chateauneu at gmail.com (remi.chateauneu at gmail.com) Date: Mon, 17 Jun 2013 22:56:11 +0100 Subject: [FreeVMS] DCL In-Reply-To: <51BF82DF.4020804@systella.fr> References: <00cb01ce6b5f$9d013410$d7039c30$@gmail.com> <51BF82DF.4020804@systella.fr> Message-ID: <51BF85FB.1010902@gmail.com> Le 17.06.2013 22:42, BERTRAND Jo?l a ?crit : > Renee a ?crit : >> Has anyone considered DCL or is it too early in the process? > > To early in the process. We need to obtain a running kernel with some IO > capabilities before trying to wrtie a shell. Indeed. On the other hand it might be possible to write the highest level part of a DCL interpreter: * Commands parsing (Options etc...) * Execution of a commands file. ... etc ... This is not a small part of the code and could probably be tested on a Unix-like environment. This would save time and would deliver "something to show" : This is important for motivation. This might be also true for tools such as CDD (Common Data Dictionary, http://h71000.www7.hp.com/commercial/c/docs/5492p036.html ). In itself, this is a very convenient tool which can be used with or without OpenVMS running it. For example, the parsing of CDD input files can probably be done independently. Also, some part of Record Management Services ( http://en.wikipedia.org/wiki/Record_Management_Services ) could be written (And used) independently of OpenVMS. At least prototyped. Remi From rmctwo at gmail.com Tue Jun 18 00:57:13 2013 From: rmctwo at gmail.com (Renee) Date: Mon, 17 Jun 2013 18:57:13 -0400 Subject: [FreeVMS] DCL In-Reply-To: <51BF85FB.1010902@gmail.com> References: <00cb01ce6b5f$9d013410$d7039c30$@gmail.com> <51BF82DF.4020804@systella.fr> <51BF85FB.1010902@gmail.com> Message-ID: <000b01ce6bae$02269e90$0673dbb0$@gmail.com> Unfortunately I have not had any experience with parsing, I did drivers. Of note DCL will be the item which will give it a VMS feel. Since it is the UI, It'll be worth some attention. Renee -----Original Message----- From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of remi.chateauneu at gmail.com Sent: Monday, June 17, 2013 5:56 PM To: FreeVMS mailing list Subject: Re: [FreeVMS] DCL Le 17.06.2013 22:42, BERTRAND Jo?l a ?crit : > Renee a ?crit : >> Has anyone considered DCL or is it too early in the process? > > To early in the process. We need to obtain a running kernel with some > IO capabilities before trying to wrtie a shell. Indeed. On the other hand it might be possible to write the highest level part of a DCL interpreter: * Commands parsing (Options etc...) * Execution of a commands file. ... etc ... This is not a small part of the code and could probably be tested on a Unix-like environment. This would save time and would deliver "something to show" : This is important for motivation. This might be also true for tools such as CDD (Common Data Dictionary, http://h71000.www7.hp.com/commercial/c/docs/5492p036.html ). In itself, this is a very convenient tool which can be used with or without OpenVMS running it. For example, the parsing of CDD input files can probably be done independently. Also, some part of Record Management Services ( http://en.wikipedia.org/wiki/Record_Management_Services ) could be written (And used) independently of OpenVMS. At least prototyped. Remi _______________________________________________ FreeVMS mailing list FreeVMS at rayleigh.systella.fr https://www.systella.fr/cgi-bin/mailman/listinfo/freevms From joel.bertrand at systella.fr Tue Jun 18 12:05:16 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Tue, 18 Jun 2013 12:05:16 +0200 Subject: [FreeVMS] FreeVMS developers Message-ID: <51C030DC.3090308@systella.fr> Hello, For one week, some new potential contributers have sent mail to this mailing list. Without particular order : - Bill Pedersen (write access to freevms.net) - Renee (I haven't his name) - Bruno Ducrot (write access to freevms.net) - Fr?d?ric Boyer - Johann Oskarsson (with limited time) - Bertrand Jo?l (write access to freevms.net) I can open write access on request on both freevms.net and git repository. I will fix bugzilla and gitweb configurations as soon as possible. I have uploaded last bootable image last sunday with some modifications to boot with grub2 instead of legacy grub. Boot rootfs is now in ext2 as grub2 cannot boot from ODS2 (legacy grub was patched to boot from ODS2 filesystem). L4/X2 doesn't work if it is built with gcc 4.7 or 4.8. I'm investigating. Seems to be a regression in gcc 4.7. If you mount freevms.img, you will find a configuration file /grub/grub.cfg that contains : set timeout=10 menuentry 'FreeVMS' { multiboot /boot/kickstart maxmem=128M kmem=8M module /boot/x86-kernel module /boot/sigma0 module /boot/vmskernel.sys vmskernel.sys root=dqa0.0 console=opa0 \ nodbg\$virtual_memory \ dbg\$sys_pagefault dbg\$vms_pagefault module /boot/pager.sys pager.sys module /boot/init.exe init.exe # module /boot/drv/dq\$pxii.sys # module /boot/drv/dp\$pc99.sys # module /boot/drv/fs\$ext2.sys } Repetions are required to boot with grub2 as multiboot specifications have changed between legacy grub and grub2. All modules can be preloaded into memory by grub2, remapped by sigma0 and tested. In a real system, only pager.sys and basic IO (dq$pxii.sys for IDE, dp$pc99.sys for disk paritioning and fs$ext2.sys for root filesystem will be required). When you run this image under qemu, last lines are : %RUN-S-STARTED, PAGER.SYS process started %PAGER-I-SWPADDR, setting swapper base address at $.... %PAGER-I-SWPSIZE, setting swap size to 0 byte %RUN-S-STOPPED, PAGER.SYS process stopped This output is generated by sources/freevms/vm/vm_pager.c (launched by sources/freevms/sys/sys_pager.c as a new thread in a separated address space). %RUN-S-STOPPED is written by return(0) from PAGER.SYS main function, as this function ends. In real system, it has to contain an infinite loop that manage memory. I have written a first algorithm here : http://www.freevms.net/article35.html but it doesn't interact with thread ID. The question is... Who wants to become official maintainer of this pager ? You can find all L4Ka documentation here : http://os.ibds.kit.edu/1956.php http://os.ibds.kit.edu/l4ka/l4-x2-r7.pdf Regards, JKB From rmctwo at gmail.com Tue Jun 18 18:04:13 2013 From: rmctwo at gmail.com (Renee) Date: Tue, 18 Jun 2013 12:04:13 -0400 Subject: [FreeVMS] FreeVMS developers In-Reply-To: <51C030DC.3090308@systella.fr> References: <51C030DC.3090308@systella.fr> Message-ID: <003501ce6c3d$81b94290$852bc7b0$@gmail.com> Renee Culver is a she. Renee -----Original Message----- From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of BERTRAND Jo?l Sent: Tuesday, June 18, 2013 6:05 AM To: FreeVMS mailing list Subject: [FreeVMS] FreeVMS developers Hello, For one week, some new potential contributers have sent mail to this mailing list. Without particular order : - Bill Pedersen (write access to freevms.net) - Renee (I haven't his name) - Bruno Ducrot (write access to freevms.net) - Fr?d?ric Boyer - Johann Oskarsson (with limited time) - Bertrand Jo?l (write access to freevms.net) I can open write access on request on both freevms.net and git repository. I will fix bugzilla and gitweb configurations as soon as possible. I have uploaded last bootable image last sunday with some modifications to boot with grub2 instead of legacy grub. Boot rootfs is now in ext2 as grub2 cannot boot from ODS2 (legacy grub was patched to boot from ODS2 filesystem). L4/X2 doesn't work if it is built with gcc 4.7 or 4.8. I'm investigating. Seems to be a regression in gcc 4.7. If you mount freevms.img, you will find a configuration file /grub/grub.cfg that contains : set timeout=10 menuentry 'FreeVMS' { multiboot /boot/kickstart maxmem=128M kmem=8M module /boot/x86-kernel module /boot/sigma0 module /boot/vmskernel.sys vmskernel.sys root=dqa0.0 console=opa0 \ nodbg\$virtual_memory \ dbg\$sys_pagefault dbg\$vms_pagefault module /boot/pager.sys pager.sys module /boot/init.exe init.exe # module /boot/drv/dq\$pxii.sys # module /boot/drv/dp\$pc99.sys # module /boot/drv/fs\$ext2.sys } Repetions are required to boot with grub2 as multiboot specifications have changed between legacy grub and grub2. All modules can be preloaded into memory by grub2, remapped by sigma0 and tested. In a real system, only pager.sys and basic IO (dq$pxii.sys for IDE, dp$pc99.sys for disk paritioning and fs$ext2.sys for root filesystem will be required). When you run this image under qemu, last lines are : %RUN-S-STARTED, PAGER.SYS process started %PAGER-I-SWPADDR, setting swapper base address at $.... %PAGER-I-SWPSIZE, setting swap size to 0 byte %RUN-S-STOPPED, PAGER.SYS process stopped This output is generated by sources/freevms/vm/vm_pager.c (launched by sources/freevms/sys/sys_pager.c as a new thread in a separated address space). %RUN-S-STOPPED is written by return(0) from PAGER.SYS main function, as this function ends. In real system, it has to contain an infinite loop that manage memory. I have written a first algorithm here : http://www.freevms.net/article35.html but it doesn't interact with thread ID. The question is... Who wants to become official maintainer of this pager ? You can find all L4Ka documentation here : http://os.ibds.kit.edu/1956.php http://os.ibds.kit.edu/l4ka/l4-x2-r7.pdf Regards, JKB _______________________________________________ FreeVMS mailing list FreeVMS at rayleigh.systella.fr https://www.systella.fr/cgi-bin/mailman/listinfo/freevms From guidoj at users.sourceforge.net Tue Jun 18 21:20:24 2013 From: guidoj at users.sourceforge.net (Guido) Date: Tue, 18 Jun 2013 21:20:24 +0200 Subject: [FreeVMS] FreeVMS developers In-Reply-To: <51C030DC.3090308@systella.fr> References: <51C030DC.3090308@systella.fr> Message-ID: <1551952.QTsGxChNh5@kermit> On Tuesday 18 June 2013 12:05:16 BERTRAND Jo?l wrote: [snip] > This output is generated by sources/freevms/vm/vm_pager.c (launched by > sources/freevms/sys/sys_pager.c as a new thread in a separated address > space). %RUN-S-STOPPED is written by return(0) from PAGER.SYS main > function, as this function ends. In real system, it has to contain an > infinite loop that manage memory. > > I have written a first algorithm here : > http://www.freevms.net/article35.html > but it doesn't interact with thread ID. > > The question is... Who wants to become official maintainer of this pager ? > > You can find all L4Ka documentation here : > http://os.ibds.kit.edu/1956.php > http://os.ibds.kit.edu/l4ka/l4-x2-r7.pdf Shouldn't there be some interface specification first? Correct me if I'm wrong but as I understand it, the pager should use some functions provided by the kernel (for instance sys$morecore()). I assume that the interface between pager and kernel is to be built upon the standard L4 IPC mechanism. If so, message specifications (label, parameters, etc) would be very helpful. Regards, Guido From remi.chateauneu at gmail.com Tue Jun 18 22:29:58 2013 From: remi.chateauneu at gmail.com (remi.chateauneu at gmail.com) Date: Tue, 18 Jun 2013 21:29:58 +0100 Subject: [FreeVMS] FreeVMS developers In-Reply-To: <003501ce6c3d$81b94290$852bc7b0$@gmail.com> References: <51C030DC.3090308@systella.fr> <003501ce6c3d$81b94290$852bc7b0$@gmail.com> Message-ID: <51C0C346.3060002@gmail.com> And spells with a "?" like Ren?e (The male version is Ren?) Le 18.06.2013 17:04, Renee a ?crit : > Renee Culver is a she. > > Renee > > -----Original Message----- From joel.bertrand at systella.fr Tue Jun 18 23:19:45 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Tue, 18 Jun 2013 23:19:45 +0200 Subject: [FreeVMS] FreeVMS developers In-Reply-To: <1551952.QTsGxChNh5@kermit> References: <51C030DC.3090308@systella.fr> <1551952.QTsGxChNh5@kermit> Message-ID: <51C0CEF1.40703@systella.fr> Guido a ?crit : > On Tuesday 18 June 2013 12:05:16 BERTRAND Jo?l wrote: > [snip] >> This output is generated by sources/freevms/vm/vm_pager.c (launched by >> sources/freevms/sys/sys_pager.c as a new thread in a separated address >> space). %RUN-S-STOPPED is written by return(0) from PAGER.SYS main >> function, as this function ends. In real system, it has to contain an >> infinite loop that manage memory. >> >> I have written a first algorithm here : >> http://www.freevms.net/article35.html >> but it doesn't interact with thread ID. >> >> The question is... Who wants to become official maintainer of this pager ? >> >> You can find all L4Ka documentation here : >> http://os.ibds.kit.edu/1956.php >> http://os.ibds.kit.edu/l4ka/l4-x2-r7.pdf > > Shouldn't there be some interface specification first? Yes, we have to write some specifications. But we need to design a maintainer that collects all documentations and specifications. > Correct me if I'm wrong but as I understand it, the pager should use some > functions provided by the kernel (for instance sys$morecore()). I assume that > the interface between pager and kernel is to be built upon the standard L4 IPC > mechanism. If so, message specifications (label, parameters, etc) would be very > helpful. Right. JKB From joel.bertrand at systella.fr Tue Jun 18 23:28:33 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Tue, 18 Jun 2013 23:28:33 +0200 Subject: [FreeVMS] FreeVMS developers In-Reply-To: <003501ce6c3d$81b94290$852bc7b0$@gmail.com> References: <51C030DC.3090308@systella.fr> <003501ce6c3d$81b94290$852bc7b0$@gmail.com> Message-ID: <51C0D101.2090300@systella.fr> Renee a ?crit : > Renee Culver is a she. Sorry, I beg your pardon... From pedersen at ccsscorp.com Tue Jun 18 23:37:31 2013 From: pedersen at ccsscorp.com (Bill Pedersen) Date: Tue, 18 Jun 2013 17:37:31 -0400 Subject: [FreeVMS] Documentation... Message-ID: <004101ce6c6c$0a28b1f0$1e7a15d0$@ccsscorp.com> Joel: You stated: "Yes, we have to write some specifications. But we need to design a maintainer that collects all documentations and specifications." I think you meant "assign a maintainer". Bill. Bill Pedersen CCSS - Computer Consulting System Services, LLC 211 Ruth Drive Gaffney, SC 29341 Telephone: 864-490-8863 Mobile: 408-892-5204 Facsimile: 206-984-3068 www: www.ccsscorp.com Skype Name: william.a.pedersen LinkedIn Profile: www.linkedin.com/in/billpedersen -------------- next part -------------- An HTML attachment was scrubbed... URL: From joel.bertrand at systella.fr Wed Jun 19 07:28:35 2013 From: joel.bertrand at systella.fr (=?windows-1252?Q?BERTRAND_Jo=EBl?=) Date: Wed, 19 Jun 2013 07:28:35 +0200 Subject: [FreeVMS] Documentation... In-Reply-To: <004101ce6c6c$0a28b1f0$1e7a15d0$@ccsscorp.com> References: <004101ce6c6c$0a28b1f0$1e7a15d0$@ccsscorp.com> Message-ID: <51C14183.7030807@systella.fr> Bill Pedersen a ?crit : > Joel: > > You stated: > > ?Yes, we have to write some specifications. But we need to design a > maintainer that collects all documentations and specifications.? > > I think you meant ?assign a maintainer?? Yes, of course... From guidoj at users.sourceforge.net Wed Jun 19 21:15:32 2013 From: guidoj at users.sourceforge.net (Guido) Date: Wed, 19 Jun 2013 21:15:32 +0200 Subject: [FreeVMS] FreeVMS developers In-Reply-To: <51C0CEF1.40703@systella.fr> References: <51C030DC.3090308@systella.fr> <1551952.QTsGxChNh5@kermit> <51C0CEF1.40703@systella.fr> Message-ID: <4764899.auX85Kaz1g@kermit> Some more observations: 1) mutexes Mutex code exists in sys_mutex.c/h but should be available in pager (and other servers like device drivers) too. I guess that IPC overhead is a waste in this case and that the mutex code should be made available as an internal library. 2) panic Right now the kernel is able to panic in certain circumstances, although I don't think an unknown IPC should be one of them. Anyway, the pager (and other servers) should have some similar functionality. The pager is a special case since if the pager panics, nothing will be able to run, so effectively the entire system should hang. If a device driver panics, it could probably be restarted. Regards, Guido From joel.bertrand at systella.fr Wed Jun 19 22:40:29 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Wed, 19 Jun 2013 22:40:29 +0200 Subject: [FreeVMS] FreeVMS developers In-Reply-To: <4764899.auX85Kaz1g@kermit> References: <51C030DC.3090308@systella.fr> <1551952.QTsGxChNh5@kermit> <51C0CEF1.40703@systella.fr> <4764899.auX85Kaz1g@kermit> Message-ID: <51C2173D.7020200@systella.fr> Guido a ?crit : > Some more observations: > > 1) mutexes > Mutex code exists in sys_mutex.c/h but should be available in pager (and other > servers like device drivers) too. I guess that IPC overhead is a waste in this > case and that the mutex code should be made available as an internal library. Right. But sys_mutex.c does not contain any real mutexes. Code is missing and, if I remember, I have to add in sys/sys_mutex.c some pieces of code to obtain active wait (? la linux spinlock due to sys/sys_mutex_amd64.S implementation). Posix mutex has to written in external library. > 2) panic > Right now the kernel is able to panic in certain circumstances, although I > don't think an unknown IPC should be one of them. Anyway, the pager (and other > servers) should have some similar functionality. The pager is a special case > since if the pager panics, nothing will be able to run, so effectively the > entire system should hang. If a device driver panics, it could probably be > restarted. I agree. As kernel is in a very early stage of development, PANIC() is only added to stop kernel with a backtrace. In a real system, some PANIC() have to be replaced with some code to catch errors. Regards, JKB From remi.chateauneu at gmail.com Thu Jun 20 00:17:06 2013 From: remi.chateauneu at gmail.com (remi.chateauneu at gmail.com) Date: Wed, 19 Jun 2013 23:17:06 +0100 Subject: [FreeVMS] PDP-11 Still Working In Nuclear Plants - For 37 More Years Message-ID: <51C22DE2.6080406@gmail.com> "Most of the younger /. readers never heard of the PDP-11, while we geezers have to retrieve bits and pieces of our affairs with PDP-11 from the vast warehouse inside our memory lanes." From the article: "HP might have nuked OpenVMS, but its parent, PDP-11, is still spry and powering GE nuclear power-plant robots and will do for another 37 years. That's right: PDP-11 assembler programmers are hard to find, but the nuclear industry is planning on keeping them until 2050 ? long enough for a couple of generations of programmers to come and go." Not sure about the OpenVMS vs PDP comparison, but it's still amusing that a PDP might outlast all of the VAX machines. http://developers.slashdot.org/story/13/06/19/1227244/pdp-11-still-working-in-nuclear-plants---for-37-more-years From joel.bertrand at systella.fr Thu Jun 20 18:13:15 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Thu, 20 Jun 2013 18:13:15 +0200 Subject: [FreeVMS] Bugzilla Message-ID: <51C32A1B.40104@systella.fr> Hello, I have fixed FreeVMS bugzilla. It's now available at https://www.systella.fr/bugzilla3 Regards, JKB From guidoj at users.sourceforge.net Thu Jun 20 21:33:51 2013 From: guidoj at users.sourceforge.net (Guido) Date: Thu, 20 Jun 2013 21:33:51 +0200 Subject: [FreeVMS] rtl$print Message-ID: <3805141.VSqOSIrj85@kermit> Hi, Please tell me there is also a simple one liner to print a message in stead of this abomination (of which I even doubt that it does what is intended): L4_Word_t arg$print1; const char * arg$print2; rtl$strcpy(&message, IPC_F_FAILED "IPC failed (error %ld: %s)"); L4_Word_t arg$print1 = L4_ErrorCode(); const char * arg$print2 = L4_ErrorCode_String(L4_ErrorCode()); void* arg$print[] = {&arg$print1, &arg$print2}; rtl$print(&message, arg$print); Regards, Guido From joel.bertrand at systella.fr Thu Jun 20 23:39:25 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Thu, 20 Jun 2013 23:39:25 +0200 Subject: [FreeVMS] rtl$print In-Reply-To: <3805141.VSqOSIrj85@kermit> References: <3805141.VSqOSIrj85@kermit> Message-ID: <51C3768D.2080605@systella.fr> Guido a ?crit : > Hi, > > Please tell me there is also a simple one liner to print a message in stead of > this abomination (of which I even doubt that it does what is intended): > > L4_Word_t arg$print1; > const char * arg$print2; > > rtl$strcpy(&message, IPC_F_FAILED "IPC failed (error %ld: %s)"); > L4_Word_t arg$print1 = L4_ErrorCode(); > const char * arg$print2 = L4_ErrorCode_String(L4_ErrorCode()); > void* arg$print[] = {&arg$print1,&arg$print2}; > rtl$print(&message, arg$print); I'll check as soon as possible. I think there is another solution, but now, it's midnight in Europe, time to go to sleep... ;-) Regards, JKB From joel.bertrand at systella.fr Fri Jun 21 11:51:05 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Fri, 21 Jun 2013 11:51:05 +0200 Subject: [FreeVMS] rtl$print In-Reply-To: <3805141.VSqOSIrj85@kermit> References: <3805141.VSqOSIrj85@kermit> Message-ID: <51C42209.8040808@systella.fr> Guido wrote: > Hi, Hello, librtl is a static library that contains all convenient functions called from FreeVMS tasks (modules, drivers, but not kernel itself). > Please tell me there is also a simple one liner to print a message in stead of > this abomination (of which I even doubt that it does what is intended): > > L4_Word_t arg$print1; > const char * arg$print2; vms$string_initializer(message, 80); > rtl$strcpy(&message, IPC_F_FAILED "IPC failed (error %ld: %s)"); > L4_Word_t arg$print1 = L4_ErrorCode(); > const char * arg$print2 = L4_ErrorCode_String(L4_ErrorCode()); > void* arg$print[] = {&arg$print1,&arg$print2}; > rtl$print(&message, arg$print); Today, this abomination is the solution as there is not mechanism to fill arg$print[]. I think we have to write a macro like rtl$args() to fill this list. // Initialization of a static string descriptor vms$string_initializer(message, 80); rtl$strcpy(&message, IPC_F_FAILED "IPC failed (error %ld: %s)"); rtl$args(arg$print, L4_ErrorCode(), L4_ErrorCode_String(L4_ErrorCode())); rtl$print(&message, arg$print); I'm not sure that I'll have time to write it this week-end as I'm trying to debug strange bugs in L4 built by gcc 4.7 and 4.8. Regards, JKB From joel.bertrand at systella.fr Sat Jun 22 14:32:00 2013 From: joel.bertrand at systella.fr (=?UTF-8?B?QkVSVFJBTkQgSm/Dq2w=?=) Date: Sat, 22 Jun 2013 14:32:00 +0200 Subject: [FreeVMS] L4Ka. Regression with 4.7 and 4.8 ? In-Reply-To: <51C376A5.4060107@systella.fr> References: <51C1AB3A.5080907@systella.fr> <2138987.2tPF7NEjmS@localhost> <51C376A5.4060107@systella.fr> Message-ID: <51C59940.3020009@systella.fr> Hello, I have bissected the code and found the faulty .o. I have attached assembly output. idt.gcc46.s is the good one. If L4 is linked with idt.gcc.47.s, it only reboots. L4 sources are available here : git://github.com/l4ka/pistachio.git Regards, JKB -------------- section suivante -------------- Un texte encapsul? et encod? dans un jeu de caract?res inconnu a ?t? nettoy?... Nom : idt.gcc46.s URL : -------------- section suivante -------------- Un texte encapsul? et encod? dans un jeu de caract?res inconnu a ?t? nettoy?... Nom : idt.gcc47.s URL : -------------- section suivante -------------- Une pi?ce jointe autre que texte a ?t? nettoy?e... Nom: idt.cc Type: text/x-c++src Taille: 4178 octets Desc: non disponible URL: -------------- section suivante -------------- Une pi?ce jointe autre que texte a ?t? nettoy?e... Nom: idt.h Type: text/x-chdr Taille: 2415 octets Desc: non disponible URL: From joel.bertrand at systella.fr Sat Jun 22 14:38:10 2013 From: joel.bertrand at systella.fr (=?UTF-8?B?QkVSVFJBTkQgSm/Dq2w=?=) Date: Sat, 22 Jun 2013 14:38:10 +0200 Subject: [FreeVMS] L4Ka. Regression with 4.7 and 4.8 ? In-Reply-To: <51C59940.3020009@systella.fr> References: <51C1AB3A.5080907@systella.fr> <2138987.2tPF7NEjmS@localhost> <51C376A5.4060107@systella.fr> <51C59940.3020009@systella.fr> Message-ID: <51C59AB2.9030208@systella.fr> I have forgotten... Compilation is done with : gcc -nostdinc -I/home/bertrand/openvms/l4/gcc-4.7/include -I/home/bertrand/openvms/l4/pistachio/kernel/src -I/home/bertrand/openvms/l4/pistachio/kernel/src/generic -I/usr/lib/gcc/x86_64-linux-gnu/4.7/include/ -Ux64 -Ux86 -Uk8 -Upc99 -Uv4 -Uhs -D__SUBARCH__=x64 -D__ARCH__=x86 -D__CPU__=k8 -D__PLATFORM__=pc99 -D__API__=v4 -D__SCHED__=hs -imacros /home/bertrand/openvms/l4/gcc-4.7/config/config.h -imacros /home/bertrand/openvms/l4/pistachio/kernel/src/generic/macros.h -include /home/bertrand/openvms/l4/pistachio/kernel/src/generic/config.h -include /home/bertrand/openvms/l4/pistachio/kernel/src/generic/types.h -fno-rtti -fno-builtin -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -m64 -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -march=k8 -Wno-conversion -fno-stack-protector -c /home/bertrand/openvms/l4/pistachio/kernel/src/glue/v4-x86/idt.cc From joel.bertrand at systella.fr Sat Jun 22 19:54:19 2013 From: joel.bertrand at systella.fr (=?UTF-8?B?QkVSVFJBTkQgSm/Dq2w=?=) Date: Sat, 22 Jun 2013 19:54:19 +0200 Subject: [FreeVMS] L4Ka. Regression with 4.7 and 4.8 ? In-Reply-To: <1371906201.3742.53.camel@yam-132-YW-E178-FTW> References: <51C1AB3A.5080907@systella.fr> <2138987.2tPF7NEjmS@localhost> <51C376A5.4060107@systella.fr> <51C59940.3020009@systella.fr> <1371906201.3742.53.camel@yam-132-YW-E178-FTW> Message-ID: <51C5E4CB.40205@systella.fr> Oleg Endo a ?crit : > On Sat, 2013-06-22 at 14:32 +0200, BERTRAND Jo?l wrote: >> Hello, >> >> I have bissected the code and found the faulty .o. I have attached >> assembly output. idt.gcc46.s is the good one. If L4 is linked with >> idt.gcc.47.s, it only reboots. > > The code of 4.6 and 4.7 seems to be pretty much the same, except for > differences in the register allocations. > (I removed all .cfi lines before doing a diff) > > However, maybe the following difference ... > > 4.6: > .section .ctors.10003,"aw", at progbits > .align 8 > .quad _GLOBAL__sub_I.55532_idt > ... > > 4.7: > .section .init_array.55532,"aw" > .align 8 > .quad _GLOBAL__sub_I.55532_idt > > (different sections being used) > > ... triggers another problem somewhere else? Maybe .init_array is not > handled by the startup code or something like that? I'm just > guessing... Maybe. But if I build all but idt.c with gcc 4.7 and only idt.c with gcc 4.6, I obtain a running kernel. Regards, JKB From joel.bertrand at systella.fr Sat Jun 22 21:38:36 2013 From: joel.bertrand at systella.fr (=?UTF-8?B?QkVSVFJBTkQgSm/Dq2w=?=) Date: Sat, 22 Jun 2013 21:38:36 +0200 Subject: [FreeVMS] L4Ka. Regression with 4.7 and 4.8 ? In-Reply-To: <1371924700.3742.108.camel@yam-132-YW-E178-FTW> References: <51C1AB3A.5080907@systella.fr> <2138987.2tPF7NEjmS@localhost> <51C376A5.4060107@systella.fr> <51C59940.3020009@systella.fr> <1371906201.3742.53.camel@yam-132-YW-E178-FTW> <51C5E4CB.40205@systella.fr> <1371924700.3742.108.camel@yam-132-YW-E178-FTW> Message-ID: <51C5FD3C.3070609@systella.fr> Oleg Endo a ?crit : > The code in idt.c compiled with 4.6 puts static initialization functions > into the .ctors section, while 4.7 puts them into the .init_array > section. Probably this happens only for this single file in the whole > kernel. My guess is that the .init_array section is not handled > properly by the startup code of the kernel. Or maybe it's even stripped > out completely (missing in the linker script). Either way, it seems > that static initialization for idt.c is not being done properly and thus > the code crashes. I don't think that ctors are stripped by linker script. This script is built by makefile. Here is my script : OUTPUT_FORMAT("elf64-x86-64") OUTPUT_ARCH("i386:x86-64") BOOTMEM_SIZE = 1024K; _start_text_phys = 0x600000; _start_text = _start_text_phys + 0xFFFFFFFFC0000000; SECTIONS { . = ALIGN(4k); .text _start_text : AT (ADDR(.text) - 0xFFFFFFFFC0000000) { *(.text); *(.gnu.linkonce.*); *(.spinlock); } . = ALIGN(4k); .rodata . : AT (ADDR(.rodata) - 0xFFFFFFFFC0000000) { *(.rodata); *(.rodata.*); } . = ALIGN(4K); .kip . : AT (ADDR(.kip) - 0xFFFFFFFFC0000000) { *(.data.kip) *(.data.kip.pdesc) *(.data.kip.kdesc) *(.data.kip.versionparts) *(.data.kip.features) *(.data.kip.features.end) . = ALIGN(16); *(.data.kip.mdesc) _memory_descriptors_raw = ABSOLUTE((_memory_descriptors_offset << 32) + _memory_descriptors_size); } _memory_descriptors_offset = memory_descriptors - kip; _memory_descriptors_size = (4K - ((memory_descriptors - kip) & (4K-1))) / 16; . = ALIGN(((1 << 21))); _start_syscalls = .; .syscalls . : AT (ADDR(.syscalls) - 0xFFFFFFFFC0000000) { *(.user.syscall.ipc); . = ALIGN((0x100)); *(.user.syscall.lipc); . = ALIGN((0x100)); *(.user.syscall.exregs); . = ALIGN((0x100)); *(.user.syscall.threadctrl); . = ALIGN((0x100)); *(.user.syscall.sysclock); . = ALIGN((0x100)); *(.user.syscall.threadswtch); . = ALIGN((0x100)); *(.user.syscall.schedule); . = ALIGN((0x100)); *(.user.syscall.unmap); . = ALIGN((0x100)); *(.user.syscall.spacectrl); . = ALIGN((0x100)); *(.user.syscall.procctrl); . = ALIGN((0x100)); *(.user.syscall.memctrl); } . = ALIGN(((1 << 21))); _end_syscalls = .; . = ALIGN(((1 << 21))); _start_cpu_local = .; .cpulocal . : AT (ADDR(.cpulocal) - 0xFFFFFFFFC0000000) { *(.data.cpulocal) *(.data.x86.cpulocal) } . = ALIGN(((1 << 21))); _end_cpu_local = .; .data . : AT (ADDR(.data) - 0xFFFFFFFFC0000000) { *(.sdata); *(.data); *(.data.x86.idt); *(.data.x86.exc_all); *(.data.x86.exc_common); *(.data.*); _start_bss = .; *(.bss); _end_bss = .; } . = ALIGN(4K); .kdebug . : AT(ADDR(.kdebug) - 0xFFFFFFFFC0000000) { *(.kdebug); *(.kdebug-bss); *(.comment); } . = ALIGN(4K); .sets . : AT(ADDR(.sets) - 0xFFFFFFFFC0000000) { . = ALIGN(16); _start_setlist = .; *(.setlist) _end_setlist = .; . = ALIGN(16); _start_sets = .; *(SORT(set_*)) _end_sets = .; } . = ALIGN(4K); _end_text = .; . = ALIGN(4K); _start_bootmem = .; . = . + BOOTMEM_SIZE; _end_bootmem = .; . = ALIGN(4K); _start_init = . - 0xFFFFFFFFC0000000; .init (. - 0xFFFFFFFFC0000000) : AT(ADDR(.init)) { *(.init.startup32); . = ALIGN(1K); *(.init.init32) FILL(0x90909090); . = . + 1K; . = ALIGN(1K); *(.init.init64); *(.init); *(.roinit); *(.init.data); *(.init.memory); *(.init.cpulocal); *(.init.*); . = ALIGN(16); _start_mdb_funcs = .; *(SORT(.mdb_funcs*)) _end_mdb_funcs = .; . = ALIGN(16); /* cpu-local static initializers */ __ctors_CPU__ = .; *(SORT(.ctors.3*)) QUAD(0) /* node-local static initializers */ __ctors_NODE__ = .; *(SORT(.ctors.2*)) QUAD(0) /* global static initializers */ __ctors_GLOBAL__ = .; *(SORT(.ctors.1*)) *(SORT(.ctors.*)) *(.ctors) QUAD(0) } _end_init = .; /* special section that is discarded during linking all unwanted sections should go here */ . = ALIGN(4K); /DISCARD/ : { *(.eh_frame); *(.note); *(.comment); } } /* physical addresses */ _end_text_phys = _end_text - 0xFFFFFFFFC0000000; _start_syscalls_phys = _start_syscalls - 0xFFFFFFFFC0000000; _end_syscalls_phys = _end_syscalls - 0xFFFFFFFFC0000000; _start_bootmem_phys = _start_bootmem - 0xFFFFFFFFC0000000; _end_bootmem_phys = _end_bootmem - 0xFFFFFFFFC0000000; Regards, JKB From rmctwo at gmail.com Sat Jun 22 22:30:09 2013 From: rmctwo at gmail.com (Renee) Date: Sat, 22 Jun 2013 16:30:09 -0400 Subject: [FreeVMS] Question Message-ID: <000f01ce6f87$4a81c610$df855230$@gmail.com> And the embarrassing thing is that I may have asked it before. Obviously we are not building a VAX. We can make this thing "source compatible" to be recompiled. And I don't think a privileged or even a CMKRNL task would work. With that in mind, I'll ask again..what are we building? Certainly some form of DCL can and must be built. Renee -------------- next part -------------- An HTML attachment was scrubbed... URL: From johann at myrkraverk.com Sun Jun 23 06:43:24 2013 From: johann at myrkraverk.com (Johann 'Myrkraverk' Oskarsson) Date: Sun, 23 Jun 2013 04:43:24 +0000 Subject: [FreeVMS] Question In-Reply-To: <000f01ce6f87$4a81c610$df855230$@gmail.com> References: <000f01ce6f87$4a81c610$df855230$@gmail.com> Message-ID: On Sat, Jun 22, 2013 at 8:30 PM, Renee wrote: > And the embarrassing thing is that I may have asked it before. Obviously we > are not building a VAX. We can make this thing ?source compatible? to be > recompiled. And I don?t think a privileged or even a CMKRNL task would work. > With that in mind, I?ll ask again?.what are we building? Certainly some form > of DCL can and must be built. And that task is quite independent of the kernel. DCL is a shell and can be written in C on top of Posix interfaces. I'm not advocating that, only pointing out it's an option. In between DCL and the kernel are the LIB$ and other VMS interfaces. These interfaces can be written on top of pretty much any kernel. At least when we have the option to modify the kernel too. The kernel itself is then a layer between the hardware and system interfaces and provides services such as ODS. That said, I'm not up to speed on the details of what's been done kernel or interface wise so far. -- Johann I'm not from the internet, I just work there. From joel.bertrand at systella.fr Sun Jun 23 11:56:43 2013 From: joel.bertrand at systella.fr (=?UTF-8?B?QkVSVFJBTkQgSm/Dq2w=?=) Date: Sun, 23 Jun 2013 11:56:43 +0200 Subject: [FreeVMS] L4Ka. Regression with 4.7 and 4.8 ? In-Reply-To: <1371932623.3742.132.camel@yam-132-YW-E178-FTW> References: <51C1AB3A.5080907@systella.fr> <2138987.2tPF7NEjmS@localhost> <51C376A5.4060107@systella.fr> <51C59940.3020009@systella.fr> <1371906201.3742.53.camel@yam-132-YW-E178-FTW> <51C5E4CB.40205@systella.fr> <1371924700.3742.108.camel@yam-132-YW-E178-FTW> <51C5FD3C.3070609@systella.fr> <1371932623.3742.132.camel@yam-132-YW-E178-FTW> Message-ID: <51C6C65B.50403@systella.fr> Oleg Endo a ?crit : > On Sat, 2013-06-22 at 21:38 +0200, BERTRAND Jo?l wrote: >> Oleg Endo a ?crit : >>> The code in idt.c compiled with 4.6 puts static initialization functions >>> into the .ctors section, while 4.7 puts them into the .init_array >>> section. Probably this happens only for this single file in the whole >>> kernel. My guess is that the .init_array section is not handled >>> properly by the startup code of the kernel. Or maybe it's even stripped >>> out completely (missing in the linker script). Either way, it seems >>> that static initialization for idt.c is not being done properly and thus >>> the code crashes. >> >> I don't think that ctors are stripped by linker script. This script is >> built by makefile. Here is my script : >> >> >> OUTPUT_FORMAT("elf64-x86-64") >> OUTPUT_ARCH("i386:x86-64") >> BOOTMEM_SIZE = 1024K; >> ... > > As I initially assumed, the .init_array section seems to be missing in > the linker script, so it gets stripped. The .init_array section has to > be handled for code generated by GCC 4.7. I would say this is an issue > of the L4 software, not GCC. OK. I have done some test since yesterday. I have tried to include .init_array in kernel. If I modify my linker script like this : SECTIONS { . = ALIGN(4k); .text _start_text : AT (ADDR(.text) - KERNEL_OFFSET) { *(.text); *(.gnu.linkonce.*); *(.spinlock); } . = ALIGN(4k); .init_array . : AT (ADDR(.init_array) - KERNEL_OFFSET) { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } . = ALIGN(4k); .rodata . : AT (ADDR(.rodata) - KERNEL_OFFSET) ... I obtain a kernel with an .init_array section. But result is the same as I suppose that kickstart does not load this new section in memory. I have tried to write .init_array in .text section with : .text _start_text : AT (ADDR(.text) - KERNEL_OFFSET) { *(.text); *(.gnu.linkonce.*); *(.spinlock); PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } I believe that .init_array is included in text section and loaded by kickstart into memory, but kernel only reboots too. Regards, JKB From joel.bertrand at systella.fr Sun Jun 23 12:29:47 2013 From: joel.bertrand at systella.fr (=?windows-1252?Q?BERTRAND_Jo=EBl?=) Date: Sun, 23 Jun 2013 12:29:47 +0200 Subject: [FreeVMS] Question In-Reply-To: References: <000f01ce6f87$4a81c610$df855230$@gmail.com> Message-ID: <51C6CE1B.5090904@systella.fr> Johann 'Myrkraverk' Oskarsson a ?crit : > On Sat, Jun 22, 2013 at 8:30 PM, Renee wrote: >> And the embarrassing thing is that I may have asked it before. Obviously we >> are not building a VAX. We can make this thing ?source compatible? to be >> recompiled. And I don?t think a privileged or even a CMKRNL task would work. >> With that in mind, I?ll ask again?.what are we building? Certainly some form >> of DCL can and must be built. > > And that task is quite independent of the kernel. DCL is a shell and > can be written in C on top of Posix interfaces. I'm not advocating > that, only pointing out it's an option. DCL will be written when we'll have a running kernel. There are a lot of stuff to do before starting DCL. If you want to start to write some userland code (not kernel, executive or system ones), in a first time you have to implemant sources/userland/rtl and sources/userland/starlet to obtain a VMS API or to port newlib on FreeVMS to obtain a real POSIX layer. But to write STARLET/LIB$ or port newlib, we have to define some SYSCALLs. Today, only SYSCALL$PRINT, SYSCALL$EXIT_VALUE and SYSCALL$KILL_THREAD have been written (sys/sys_loop.c). Regards, JKB From joel.bertrand at systella.fr Sun Jun 23 12:56:24 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Sun, 23 Jun 2013 12:56:24 +0200 Subject: [FreeVMS] L4Ka. Regression with 4.7 and 4.8 ? In-Reply-To: <1371983504.3742.157.camel@yam-132-YW-E178-FTW> References: <51C1AB3A.5080907@systella.fr> <2138987.2tPF7NEjmS@localhost> <51C376A5.4060107@systella.fr> <51C59940.3020009@systella.fr> <1371906201.3742.53.camel@yam-132-YW-E178-FTW> <51C5E4CB.40205@systella.fr> <1371924700.3742.108.camel@yam-132-YW-E178-FTW> <51C5FD3C.3070609@systella.fr> <1371932623.3742.132.camel@yam-132-YW-E178-FTW> <51C6C65B.50403@systella.fr> <1371983504.3742.157.camel@yam-132-YW-E178-FTW> Message-ID: <51C6D458.1000704@systella.fr> Oleg Endo a ?crit : > Simply merging .init_array into .text is not going to produce anything > but some unused data in .text. > .init_array is a vector of function pointers. These functions are > supposed to be invoked by the startup code before invoking 'main'. > You could try merging .init_array into the existing .ctors and see where > it goes. Thanks a lot for your explanations. With : . = ALIGN(16); /* cpu-local static initializers */ __ctors_CPU__ = .; *(SORT(.ctors.3*)) QUAD(0) /* node-local static initializers */ __ctors_NODE__ = .; *(SORT(.ctors.2*)) QUAD(0) /* global static initializers */ __ctors_GLOBAL__ = .; *(SORT(.ctors.1*)) *(.init_array) *(SORT(.init_array.*)) *(SORT(.ctors.*)) *(.ctors) QUAD(0) L4 can be built with gcc-4.7. Regards, JKB From rmctwo at gmail.com Sun Jun 23 20:33:38 2013 From: rmctwo at gmail.com (Renee) Date: Sun, 23 Jun 2013 14:33:38 -0400 Subject: [FreeVMS] Question In-Reply-To: <51C6CE1B.5090904@systella.fr> References: <000f01ce6f87$4a81c610$df855230$@gmail.com> <51C6CE1B.5090904@systella.fr> Message-ID: <003b01ce7040$2e438d80$8acaa880$@gmail.com> Posix? Why write posix at all? Renee -----Original Message----- From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of BERTRAND Jo?l Sent: Sunday, June 23, 2013 6:30 AM To: FreeVMS mailing list Subject: Re: [FreeVMS] Question Johann 'Myrkraverk' Oskarsson a ?crit : > On Sat, Jun 22, 2013 at 8:30 PM, Renee wrote: >> And the embarrassing thing is that I may have asked it before. >> Obviously we are not building a VAX. We can make this thing ?source >> compatible? to be recompiled. And I don?t think a privileged or even a CMKRNL task would work. >> With that in mind, I?ll ask again .what are we building? Certainly >> some form of DCL can and must be built. > > And that task is quite independent of the kernel. DCL is a shell and > can be written in C on top of Posix interfaces. I'm not advocating > that, only pointing out it's an option. DCL will be written when we'll have a running kernel. There are a lot of stuff to do before starting DCL. If you want to start to write some userland code (not kernel, executive or system ones), in a first time you have to implemant sources/userland/rtl and sources/userland/starlet to obtain a VMS API or to port newlib on FreeVMS to obtain a real POSIX layer. But to write STARLET/LIB$ or port newlib, we have to define some SYSCALLs. Today, only SYSCALL$PRINT, SYSCALL$EXIT_VALUE and SYSCALL$KILL_THREAD have been written (sys/sys_loop.c). Regards, JKB _______________________________________________ FreeVMS mailing list FreeVMS at rayleigh.systella.fr https://www.systella.fr/cgi-bin/mailman/listinfo/freevms From johann at myrkraverk.com Sun Jun 23 23:23:58 2013 From: johann at myrkraverk.com (Johann 'Myrkraverk' Oskarsson) Date: Sun, 23 Jun 2013 21:23:58 +0000 Subject: [FreeVMS] Question In-Reply-To: <003b01ce7040$2e438d80$8acaa880$@gmail.com> References: <000f01ce6f87$4a81c610$df855230$@gmail.com> <51C6CE1B.5090904@systella.fr> <003b01ce7040$2e438d80$8acaa880$@gmail.com> Message-ID: Hi, On Sun, Jun 23, 2013 at 6:33 PM, Renee wrote: > Posix? Why write posix at all? > Renee Posix is an important part of any server environment today; at least the C RTL parts of it. It's better to think about it from the start rather than try to wedge it on the system after the fact. > -----Original Message----- > From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of > BERTRAND Jo?l > DCL will be written when we'll have a running kernel. There are a > lot of stuff to do before starting DCL. True. > If you want to start to write some userland code (not kernel, > executive or system ones), in a first time you have to implemant > sources/userland/rtl and sources/userland/starlet to obtain a VMS API or to > port newlib on FreeVMS to obtain a real POSIX layer. But to write > STARLET/LIB$ or port newlib, we have to define some SYSCALLs. Today, only > SYSCALL$PRINT, SYSCALL$EXIT_VALUE and SYSCALL$KILL_THREAD have been written > (sys/sys_loop.c). What exactly is newlib? It's not my call, but I would build the kernel to provide both VMS and Posix system calls, similar what's been done in Haiku where they implement both BeOS and a subset of Posix system calls. Is there a tutorial on how to build and run FreeVMS? Something that demonstrates how to go from pure source code to running it in a (virtual) machine? -- Johann I'm not from the internet, I just work there. From joel.bertrand at systella.fr Sun Jun 23 23:52:56 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Sun, 23 Jun 2013 23:52:56 +0200 Subject: [FreeVMS] Question In-Reply-To: References: <000f01ce6f87$4a81c610$df855230$@gmail.com> <51C6CE1B.5090904@systella.fr> <003b01ce7040$2e438d80$8acaa880$@gmail.com> Message-ID: <51C76E38.6030200@systella.fr> Johann 'Myrkraverk' Oskarsson a ?crit : > Hi, > > On Sun, Jun 23, 2013 at 6:33 PM, Renee wrote: >> Posix? Why write posix at all? >> Renee > > Posix is an important part of any server environment today; at least > the C RTL parts of it. It's better to think about it from the start > rather than try to wedge it on the system after the fact. > >> -----Original Message----- >> From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of >> BERTRAND Jo?l > >> DCL will be written when we'll have a running kernel. There are a >> lot of stuff to do before starting DCL. > > True. > >> If you want to start to write some userland code (not kernel, >> executive or system ones), in a first time you have to implemant >> sources/userland/rtl and sources/userland/starlet to obtain a VMS API or to >> port newlib on FreeVMS to obtain a real POSIX layer. But to write >> STARLET/LIB$ or port newlib, we have to define some SYSCALLs. Today, only >> SYSCALL$PRINT, SYSCALL$EXIT_VALUE and SYSCALL$KILL_THREAD have been written >> (sys/sys_loop.c). > > What exactly is newlib? > > It's not my call, but I would build the kernel to provide both VMS and > Posix system calls, similar what's been done in Haiku where they > implement both BeOS and a subset of Posix system calls. Newlib is a POSIX libc that only uses a few syscalls. > Is there a tutorial on how to build and run FreeVMS? Something that > demonstrates how to go from pure source code to running it in a > (virtual) machine? You have an howto in sources to build a qemu disk image. Today, you cannot run any code as FreeVMS requires a pager (and sometimes, kernel freezes during initialization as recursive mutexes are broken. I think I will fix these mutexes this monday and push modifications in git tree). Regards, JKB From joel.bertrand at systella.fr Sun Jun 23 23:57:10 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Sun, 23 Jun 2013 23:57:10 +0200 Subject: [FreeVMS] Question In-Reply-To: <51C76E38.6030200@systella.fr> References: <000f01ce6f87$4a81c610$df855230$@gmail.com> <51C6CE1B.5090904@systella.fr> <003b01ce7040$2e438d80$8acaa880$@gmail.com> <51C76E38.6030200@systella.fr> Message-ID: <51C76F36.2000203@systella.fr> BERTRAND Jo?l a ?crit : > Johann 'Myrkraverk' Oskarsson a ?crit : >> Hi, >> >> On Sun, Jun 23, 2013 at 6:33 PM, Renee wrote: >>> Posix? Why write posix at all? >>> Renee >> >> Posix is an important part of any server environment today; at least >> the C RTL parts of it. It's better to think about it from the start >> rather than try to wedge it on the system after the fact. >> >>> -----Original Message----- >>> From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of >>> BERTRAND Jo?l >> >>> DCL will be written when we'll have a running kernel. There are a >>> lot of stuff to do before starting DCL. >> >> True. >> >>> If you want to start to write some userland code (not kernel, >>> executive or system ones), in a first time you have to implemant >>> sources/userland/rtl and sources/userland/starlet to obtain a VMS API >>> or to >>> port newlib on FreeVMS to obtain a real POSIX layer. But to write >>> STARLET/LIB$ or port newlib, we have to define some SYSCALLs. Today, >>> only >>> SYSCALL$PRINT, SYSCALL$EXIT_VALUE and SYSCALL$KILL_THREAD have been >>> written >>> (sys/sys_loop.c). >> >> What exactly is newlib? >> >> It's not my call, but I would build the kernel to provide both VMS and >> Posix system calls, similar what's been done in Haiku where they >> implement both BeOS and a subset of Posix system calls. > > Newlib is a POSIX libc that only uses a few syscalls. Sorry, I have forgotten to add its url : http://sourceware.org/newlib/ JKB From alex22_7 at hotmail.com Thu Jun 27 12:36:13 2013 From: alex22_7 at hotmail.com (Slex Sangiuliano) Date: Thu, 27 Jun 2013 10:36:13 +0000 Subject: [FreeVMS] New, L4 and OS development Message-ID: Hello, I'm new to this mailing list, and very new to the FreeVMS project, this is why I have some questions. 1) Do you have an IRC channel? 2) Do you accept code from more permissive licenses like BSD and MIT? 3) Are new comers that want to learn OS development, and that can help in someway, accepted? 4) Is this project registerd to ohloh? I'm very interested in ?kernel based OS development, but I have to say I'm very new to the VMS world, so my intention is to learn and help where I can. I'm a computer science student and going to finish mi Bachelor. You can find me on ohloh: https://www.ohloh.net/people?q=Alessandro%20Sangiuliano Do you think and IRC channel can be usefull? Yes, I would join this project but woth humility and learning spirit. Thank you, Cheers Alex. -------------- next part -------------- An HTML attachment was scrubbed... URL: From joel.bertrand at systella.fr Thu Jun 27 21:48:50 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Thu, 27 Jun 2013 21:48:50 +0200 Subject: [FreeVMS] New, L4 and OS development In-Reply-To: References: Message-ID: <51CC9722.3020707@systella.fr> Slex Sangiuliano a ?crit : > Hello, Hello, > I'm new to this mailing list, and very new to the FreeVMS project, this > is why I have some questions. > > 1) Do you have an IRC channel? No, we haven't, but I can open a jabber server. I prefer mailing list as mailman archives all discussions. > 2) Do you accept code from more permissive licenses like BSD and MIT? L4ka is given with a BSD license, but I prefer GPL (or CeCCILv2). > 3) Are new comers that want to learn OS development, and that can help > in someway, accepted? Why not ? > 4) Is this project registerd to ohloh? No. On Freecode. > I'm very interested in ?kernel based OS development, but I have to say > I'm very new to the VMS world, so my intention is to learn and help > where I can. Today, we need to write a pager that is not related to VMS itself. > I'm a computer science student and going to finish mi Bachelor. > You can find me on ohloh: > > https://www.ohloh.net/people?q=Alessandro%20Sangiuliano > > Do you think and IRC channel can be usefull? I don't think. I prefer open some new and more specialized mailing lists. > Yes, I would join this project but woth humility and learning spirit. > > Thank you, You're welcome, JKB From alex22_7 at hotmail.com Fri Jun 28 12:29:30 2013 From: alex22_7 at hotmail.com (Slex Sangiuliano) Date: Fri, 28 Jun 2013 10:29:30 +0000 Subject: [FreeVMS] New, L4 and OS development In-Reply-To: <51CC9722.3020707@systella.fr> References: , <51CC9722.3020707@systella.fr> Message-ID: > Date: Thu, 27 Jun 2013 21:48:50 +0200 > From: joel.bertrand at systella.fr > To: freevms at rayleigh.systella.fr > Subject: Re: [FreeVMS] New, L4 and OS development > > Slex Sangiuliano a ?crit : > > Hello, > > Hello, > > > I'm new to this mailing list, and very new to the FreeVMS project, this > > is why I have some questions. > > > > 1) Do you have an IRC channel? > > No, we haven't, but I can open a jabber server. I prefer mailing list > as mailman archives all discussions. A jabber server would be fine to me, so I can do lot of learning questions. Consider me like a n00b Thank You for your patience. Cheers, Alex -------------- next part -------------- An HTML attachment was scrubbed... URL: From herb.nowell at gmail.com Fri Jun 28 15:12:24 2013 From: herb.nowell at gmail.com (Herb Nowell) Date: Fri, 28 Jun 2013 09:12:24 -0400 Subject: [FreeVMS] New, L4 and OS development In-Reply-To: References: <51CC9722.3020707@systella.fr> Message-ID: As another newbie with little OS programming experience I'm also at a loss as where to start in helping move the project forward. My interest in VMS is driven mostly by the file system so I'd like to start there but I get the impression that's well in the future. On Fri, Jun 28, 2013 at 6:29 AM, Slex Sangiuliano wrote: > > > > Date: Thu, 27 Jun 2013 21:48:50 +0200 > > From: joel.bertrand at systella.fr > > To: freevms at rayleigh.systella.fr > > Subject: Re: [FreeVMS] New, L4 and OS development > > > > > Slex Sangiuliano a ?crit : > > > Hello, > > > > Hello, > > > > > I'm new to this mailing list, and very new to the FreeVMS project, this > > > is why I have some questions. > > > > > > 1) Do you have an IRC channel? > > > > No, we haven't, but I can open a jabber server. I prefer mailing list > > as mailman archives all discussions. > > A jabber server would be fine to me, so I can do lot of learning > questions. Consider me like a n00b > > Thank You for your patience. > > Cheers, > Alex > > _______________________________________________ > FreeVMS mailing list > FreeVMS at rayleigh.systella.fr > https://www.systella.fr/cgi-bin/mailman/listinfo/freevms > > -- Herbert H. Nowell -------------- next part -------------- An HTML attachment was scrubbed... URL: From guidoj at users.sourceforge.net Fri Jun 28 20:59:45 2013 From: guidoj at users.sourceforge.net (Guido) Date: Fri, 28 Jun 2013 20:59:45 +0200 Subject: [FreeVMS] pager question Message-ID: <2017497.RiuaGyRr4O@kermit> Hi all, Looking at the pager algorithm I noticed that a page fault in user space could lead to allocation of a new page for the process that generated the page fault. Maybe I'm missing something, but it seems to me that that is not desired behavior. Buggy or malicious software in user space should not be able to acquire resources simply by accessing invalid memory addresses. In stead this should lead to an access violation and termination of the originating process. I'd suggest that page fault handling and mapping/granting memory are entirely separate functions. A page fault on a page that is not mapped is an access violation and should lead to termination of the originating process. If the page is mapped, the pager could (like OpenVMS does) distinguish between soft and hard page faults. A soft page fault means that the page still resides somewhere in cache, while a hard page fault means it is swapped out and has to be loaded from disk. This depends on the paging algorithm. Memory allocation and mapping/granting pages is something completely different. My suggestion would be that allocation requests by user tasks are handled by the task pager. If the task pager runs out of memory it can request one or more pages from the main pager through a page request system call. The main pager can map/grant a page from the free page pool it maintains or, if the pool is empty, it can request a new page from the kernel. If the kernel runs out of free pages, the pager should free up some pages by swapping out some pages to disk. Note that this could (should?) be optimised by initially mapping/granting all free pages to the main pager, so that the pager does not have to use system calls to request memory from the kernel once the system is up and running. I could be wrong, of course ... Regards, Guido From joel.bertrand at systella.fr Sat Jun 29 10:34:19 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Sat, 29 Jun 2013 10:34:19 +0200 Subject: [FreeVMS] Mutexes are broken Message-ID: <51CE9C0B.4080202@systella.fr> Hello, Don't use git tree to build FreeVMS from scratch. Mutexes are currently broken and roottask allocator enters in deadlock. I'm investigating. Regards, JKB From joel.bertrand at systella.fr Sat Jun 29 12:44:23 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Sat, 29 Jun 2013 12:44:23 +0200 Subject: [FreeVMS] pager question In-Reply-To: <2017497.RiuaGyRr4O@kermit> References: <2017497.RiuaGyRr4O@kermit> Message-ID: <51CEBA87.3050107@systella.fr> Guido a ?crit : > Hi all, Hello, > Looking at the pager algorithm I noticed that a page fault in user space could > lead to allocation of a new page for the process that generated the page > fault. Right. > Maybe I'm missing something, but it seems to me that that is not > desired behavior. Buggy or malicious software in user space should not be able > to acquire resources simply by accessing invalid memory addresses. In stead > this should lead to an access violation and termination of the originating > process. I agree. For kernel itself, sys_pagefault always returns new ressources. For an unprivilegied process, pager has to save a list of allocated pages for this process. Pagefault handler only has to return new pages when process is loaded in memory, when stack is growing or when process uses something like mmap() or brk(). In all other cases, pagefault has to raise a new syscall to kill process. > I'd suggest that page fault handling and mapping/granting memory are entirely > separate functions. A page fault on a page that is not mapped is an access > violation and should lead to termination of the originating process. If the > page is mapped, the pager could (like OpenVMS does) distinguish between soft > and hard page faults. A soft page fault means that the page still resides > somewhere in cache, while a hard page fault means it is swapped out and has to > be loaded from disk. This depends on the paging algorithm. I agree. > Memory allocation and mapping/granting pages is something completely different. > My suggestion would be that allocation requests by user tasks are handled by > the task pager. If the task pager runs out of memory it can request one or > more pages from the main pager through a page request system call. The main > pager can map/grant a page from the free page pool it maintains or, if the > pool is empty, it can request a new page from the kernel. If the kernel runs > out of free pages, the pager should free up some pages by swapping out some > pages to disk. Note that this could (should?) be optimised by initially > mapping/granting all free pages to the main pager, so that the pager does not > have to use system calls to request memory from the kernel once the system is > up and running. > > I could be wrong, of course ... No, I don't think. In a first time, I propose that task pager doesn't use swapped memory as we need disk I/O drivers to handle swap and as these drivers require task pager. Kickstart loads L4/X2, sigma0 and several modules : - vmskernel.sys (uses sigma0 pager) ; - pager.sys (main pager that use sys_pagefault) that is launched _without_ swapped memory area as disk I/O are not available ; - dq driver + partionning to add swapping capabilities. Regards, JKB From guidoj at users.sourceforge.net Sat Jun 29 14:59:23 2013 From: guidoj at users.sourceforge.net (Guido) Date: Sat, 29 Jun 2013 14:59:23 +0200 Subject: [FreeVMS] pager question In-Reply-To: <51CEBA87.3050107@systella.fr> References: <2017497.RiuaGyRr4O@kermit> <51CEBA87.3050107@systella.fr> Message-ID: <3734761.O7y1JblQ8u@kermit> On Saturday 29 June 2013 12:44:23 BERTRAND Jo?l wrote: > I agree. For kernel itself, sys_pagefault always returns new > ressources. For an unprivilegied process, pager has to save a list of > allocated pages for this process. Pagefault handler only has to return > new pages when process is loaded in memory, when stack is growing or > when process uses something like mmap() or brk(). In all other cases, > pagefault has to raise a new syscall to kill process. OK, but could you explain why a page fault (essentially a hardware generated error condition) and a memory allocation request (software generated, on purpose) are handled by the same function (the pagefault handler) when they are to be handled differently? Wouldn't it be easier to have separate IPC calls and handlers? > No, I don't think. In a first time, I propose that task pager doesn't > use swapped memory as we need disk I/O drivers to handle swap and as > these drivers require task pager. Agreed. My suggestion was more an ultimate goal. At first don't bother with swap and disk I/O, physical memory should be more than adequate for now. Regards, Guido From joel.bertrand at systella.fr Sat Jun 29 18:10:16 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Sat, 29 Jun 2013 18:10:16 +0200 Subject: [FreeVMS] pager question In-Reply-To: <3734761.O7y1JblQ8u@kermit> References: <2017497.RiuaGyRr4O@kermit> <51CEBA87.3050107@systella.fr> <3734761.O7y1JblQ8u@kermit> Message-ID: <51CF06E8.4060208@systella.fr> Guido a ?crit : > On Saturday 29 June 2013 12:44:23 BERTRAND Jo?l wrote: >> I agree. For kernel itself, sys_pagefault always returns new >> ressources. For an unprivilegied process, pager has to save a list of >> allocated pages for this process. Pagefault handler only has to return >> new pages when process is loaded in memory, when stack is growing or >> when process uses something like mmap() or brk(). In all other cases, >> pagefault has to raise a new syscall to kill process. > > OK, but could you explain why a page fault (essentially a hardware generated > error condition) and a memory allocation request (software generated, on > purpose) are handled by the same function (the pagefault handler) when they > are to be handled differently? Wouldn't it be easier to have separate IPC calls > and handlers? When a process try to access to a unmapped page, it generates a pagefault IPC. This IPC is received by an event handler loop in its parent (for example, PAGER.SYS sends L4_PAGEFAULT IPC to VMSKERNEL.SYS and all IPC are caught in sys/sys_loop.c). Child process does not know if its request can or will be done. It only sends L4_PAGEFAULT IPC to its parent and waits for an answer. This answer can be a new L4_MapItem() or a L4_AbortIpc_and_stop(). Thus, I don't see why we need to separate L4_PAGEFAULT IPC in two IPC calls. Regards, JKB From guidoj at users.sourceforge.net Sat Jun 29 21:02:34 2013 From: guidoj at users.sourceforge.net (Guido) Date: Sat, 29 Jun 2013 21:02:34 +0200 Subject: [FreeVMS] pager question In-Reply-To: <51CF06E8.4060208@systella.fr> References: <2017497.RiuaGyRr4O@kermit> <3734761.O7y1JblQ8u@kermit> <51CF06E8.4060208@systella.fr> Message-ID: <5517291.U0PMCm2LmT@kermit> On Saturday 29 June 2013 18:10:16 BERTRAND Jo?l wrote: > When a process try to access to a unmapped page, it generates a > pagefault IPC. This IPC is received by an event handler loop in its > parent (for example, PAGER.SYS sends L4_PAGEFAULT IPC to VMSKERNEL.SYS > and all IPC are caught in sys/sys_loop.c). > > Child process does not know if its request can or will be done. It only > sends L4_PAGEFAULT IPC to its parent and waits for an answer. This > answer can be a new L4_MapItem() or a L4_AbortIpc_and_stop(). Thus, I > don't see why we need to separate L4_PAGEFAULT IPC in two IPC calls. The question is if the the process should try to access an unmapped page if it actually tries to allocate memory. Shouldn't the process try to request more pages first and wait for them to be mapped into its address space before it tries to access them? It seems to me that this makes the pagefault handling algorithm needlessly complex. The algorithm could as simple as "if the page is mapped, load it from cache or swap, otherwise kill the process". A pagefault should be an exception not a function. IMHO a page fault and a memory request are completely different and should not be combined into one IPC call. I'm afraid that combining them will in de long run this only hurt reliability, stability and maintainability of the OS. Regards, Guido From joel.bertrand at systella.fr Sat Jun 29 22:21:38 2013 From: joel.bertrand at systella.fr (=?ISO-8859-1?Q?BERTRAND_Jo=EBl?=) Date: Sat, 29 Jun 2013 22:21:38 +0200 Subject: [FreeVMS] pager question In-Reply-To: <5517291.U0PMCm2LmT@kermit> References: <2017497.RiuaGyRr4O@kermit> <3734761.O7y1JblQ8u@kermit> <51CF06E8.4060208@systella.fr> <5517291.U0PMCm2LmT@kermit> Message-ID: <51CF41D2.8000901@systella.fr> Guido a ?crit : > On Saturday 29 June 2013 18:10:16 BERTRAND Jo?l wrote: >> When a process try to access to a unmapped page, it generates a >> pagefault IPC. This IPC is received by an event handler loop in its >> parent (for example, PAGER.SYS sends L4_PAGEFAULT IPC to VMSKERNEL.SYS >> and all IPC are caught in sys/sys_loop.c). >> >> Child process does not know if its request can or will be done. It only >> sends L4_PAGEFAULT IPC to its parent and waits for an answer. This >> answer can be a new L4_MapItem() or a L4_AbortIpc_and_stop(). Thus, I >> don't see why we need to separate L4_PAGEFAULT IPC in two IPC calls. > > The question is if the the process should try to access an unmapped page if it > actually tries to allocate memory. Shouldn't the process try to request more > pages first and wait for them to be mapped into its address space before it > tries to access them? With L4, you only map a page in process address space when you try to access to this page. > It seems to me that this makes the pagefault handling algorithm needlessly > complex. The algorithm could as simple as "if the page is mapped, load it from > cache or swap, otherwise kill the process". A pagefault should be an exception > not a function. L4_PAGEFAULT IPC is sent when a process tries to access to unmapped memory. Process sends this IPC when it is loaded in memory too. Thus, I think we have to use a second syscall to indicate to pager two modes : 1/ process can request memory (initialization or brk()) ; 2/ process has to be stopped (access violation). > IMHO a page fault and a memory request are completely different and should not > be combined into one IPC call. I'm afraid that combining them will in de long > run this only hurt reliability, stability and maintainability of the OS. On L4, you only have one IPC. But you can add other IPC's to switch between more than one functions. Regards, JKB From rmctwo at gmail.com Sat Jun 29 22:36:01 2013 From: rmctwo at gmail.com (Renee) Date: Sat, 29 Jun 2013 16:36:01 -0400 Subject: [FreeVMS] pager question In-Reply-To: <51CEBA87.3050107@systella.fr> References: <2017497.RiuaGyRr4O@kermit> <51CEBA87.3050107@systella.fr> Message-ID: <000e01ce7508$45303b20$cf90b160$@gmail.com> This process is good for me because it brings my memory back. -----Original Message----- From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of BERTRAND Jo?l Sent: Saturday, June 29, 2013 6:44 AM To: FreeVMS mailing list Subject: Re: [FreeVMS] pager question Guido a ?crit : > Hi all, Hello, > Looking at the pager algorithm I noticed that a page fault in user > space could lead to allocation of a new page for the process that > generated the page fault. Right. > Maybe I'm missing something, but it seems to me that that is not > desired behavior. Buggy or malicious software in user space should not > be able to acquire resources simply by accessing invalid memory > addresses. In stead this should lead to an access violation and > termination of the originating process. O It seems this process is devoid of acknowledgement that sysgen existed and was an important part of resource allocation and limiting said allocation. I agree. For kernel itself, sys_pagefault always returns new ressources. For an unprivilegied process, pager has to save a list of allocated pages for this process. O I should add that the database in memory was complex. Pagefault handler only has to return new pages when process is loaded in memory, when stack is growing or when process uses something like mmap() or brk(). In all other cases, pagefault has to raise a new syscall to kill process. Again process defaults are set by sysgen. > I'd suggest that page fault handling and mapping/granting memory are > entirely separate functions. A page fault on a page that is not mapped > is an access violation and should lead to termination of the > originating process. If the page is mapped, the pager could (like > OpenVMS does) distinguish between soft and hard page faults. A soft > page fault means that the page still resides somewhere in cache, while > a hard page fault means it is swapped out and has to be loaded from disk. This depends on the paging algorithm. I agree. > Memory allocation and mapping/granting pages is something completely different. > My suggestion would be that allocation requests by user tasks are > handled by the task pager. If the task pager runs out of memory it can > request one or more pages from the main pager through a page request > system call. The main pager can map/grant a page from the free page > pool it maintains or, if the pool is empty, it can request a new page > from the kernel. If the kernel runs out of free pages, the pager > should free up some pages by swapping out some pages to disk. Note > that this could (should?) be optimised by initially mapping/granting > all free pages to the main pager, so that the pager does not have to > use system calls to request memory from the kernel once the system is up and running. > > I could be wrong, of course ... No, I don't think. In a first time, I propose that task pager doesn't use swapped memory as we need disk I/O drivers to handle swap and as these drivers require task pager. Kickstart loads L4/X2, sigma0 and several modules : - vmskernel.sys (uses sigma0 pager) ; - pager.sys (main pager that use sys_pagefault) that is launched _without_ swapped memory area as disk I/O are not available ; - dq driver + partionning to add swapping capabilities. Renee From rmctwo at gmail.com Sat Jun 29 22:38:28 2013 From: rmctwo at gmail.com (Renee) Date: Sat, 29 Jun 2013 16:38:28 -0400 Subject: [FreeVMS] pager question In-Reply-To: <5517291.U0PMCm2LmT@kermit> References: <2017497.RiuaGyRr4O@kermit> <3734761.O7y1JblQ8u@kermit> <51CF06E8.4060208@systella.fr> <5517291.U0PMCm2LmT@kermit> Message-ID: <000f01ce7508$9ccfdf20$d66f9d60$@gmail.com> Guido... I hate doing this,,,but what does IPC stand for? Renee -----Original Message----- From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of Guido Sent: Saturday, June 29, 2013 3:03 PM To: FreeVMS mailing list Subject: Re: [FreeVMS] pager question On Saturday 29 June 2013 18:10:16 BERTRAND Jo?l wrote: > When a process try to access to a unmapped page, it generates a > pagefault IPC. This IPC is received by an event handler loop in its > parent (for example, PAGER.SYS sends L4_PAGEFAULT IPC to VMSKERNEL.SYS > and all IPC are caught in sys/sys_loop.c). > > Child process does not know if its request can or will be done. It > only sends L4_PAGEFAULT IPC to its parent and waits for an answer. > This answer can be a new L4_MapItem() or a L4_AbortIpc_and_stop(). > Thus, I don't see why we need to separate L4_PAGEFAULT IPC in two IPC calls. The question is if the the process should try to access an unmapped page if it actually tries to allocate memory. Shouldn't the process try to request more pages first and wait for them to be mapped into its address space before it tries to access them? It seems to me that this makes the pagefault handling algorithm needlessly complex. The algorithm could as simple as "if the page is mapped, load it from cache or swap, otherwise kill the process". A pagefault should be an exception not a function. IMHO a page fault and a memory request are completely different and should not be combined into one IPC call. I'm afraid that combining them will in de long run this only hurt reliability, stability and maintainability of the OS. Regards, Guido _______________________________________________ FreeVMS mailing list FreeVMS at rayleigh.systella.fr https://www.systella.fr/cgi-bin/mailman/listinfo/freevms From pedersen at ccsscorp.com Sat Jun 29 23:04:17 2013 From: pedersen at ccsscorp.com (Bill Pedersen) Date: Sat, 29 Jun 2013 17:04:17 -0400 Subject: [FreeVMS] pager question In-Reply-To: <000f01ce7508$9ccfdf20$d66f9d60$@gmail.com> References: <2017497.RiuaGyRr4O@kermit> <3734761.O7y1JblQ8u@kermit> <51CF06E8.4060208@systella.fr> <5517291.U0PMCm2LmT@kermit> <000f01ce7508$9ccfdf20$d66f9d60$@gmail.com> Message-ID: <061201ce750c$388942a0$a99bc7e0$@ccsscorp.com> Inter-Process Communications... This might be a good starting point: http://en.wikipedia.org/wiki/Microkernel Bill Pedersen CCSS - Computer Consulting System Services, LLC 211 Ruth Drive Gaffney, SC 29341 Telephone: 864-490-8863 Mobile: 408-892-5204 Facsimile: 206-984-3068 www: www.ccsscorp.com Skype Name: william.a.pedersen LinkedIn Profile: www.linkedin.com/in/billpedersen -----Original Message----- From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of Renee Sent: Saturday, June 29, 2013 4:38 PM To: 'FreeVMS mailing list' Subject: Re: [FreeVMS] pager question Guido... I hate doing this,,,but what does IPC stand for? Renee -----Original Message----- From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of Guido Sent: Saturday, June 29, 2013 3:03 PM To: FreeVMS mailing list Subject: Re: [FreeVMS] pager question On Saturday 29 June 2013 18:10:16 BERTRAND Jo?l wrote: > When a process try to access to a unmapped page, it generates a > pagefault IPC. This IPC is received by an event handler loop in its > parent (for example, PAGER.SYS sends L4_PAGEFAULT IPC to VMSKERNEL.SYS > and all IPC are caught in sys/sys_loop.c). > > Child process does not know if its request can or will be done. It > only sends L4_PAGEFAULT IPC to its parent and waits for an answer. > This answer can be a new L4_MapItem() or a L4_AbortIpc_and_stop(). > Thus, I don't see why we need to separate L4_PAGEFAULT IPC in two IPC calls. The question is if the the process should try to access an unmapped page if it actually tries to allocate memory. Shouldn't the process try to request more pages first and wait for them to be mapped into its address space before it tries to access them? It seems to me that this makes the pagefault handling algorithm needlessly complex. The algorithm could as simple as "if the page is mapped, load it from cache or swap, otherwise kill the process". A pagefault should be an exception not a function. IMHO a page fault and a memory request are completely different and should not be combined into one IPC call. I'm afraid that combining them will in de long run this only hurt reliability, stability and maintainability of the OS. Regards, Guido _______________________________________________ FreeVMS mailing list FreeVMS at rayleigh.systella.fr https://www.systella.fr/cgi-bin/mailman/listinfo/freevms _______________________________________________ FreeVMS mailing list FreeVMS at rayleigh.systella.fr https://www.systella.fr/cgi-bin/mailman/listinfo/freevms From rmctwo at gmail.com Sun Jun 30 01:56:40 2013 From: rmctwo at gmail.com (Renee) Date: Sat, 29 Jun 2013 19:56:40 -0400 Subject: [FreeVMS] pager question In-Reply-To: <061201ce750c$388942a0$a99bc7e0$@ccsscorp.com> References: <2017497.RiuaGyRr4O@kermit> <3734761.O7y1JblQ8u@kermit> <51CF06E8.4060208@systella.fr> <5517291.U0PMCm2LmT@kermit> <000f01ce7508$9ccfdf20$d66f9d60$@gmail.com> <061201ce750c$388942a0$a99bc7e0$@ccsscorp.com> Message-ID: <000201ce7524$4d0c5790$e72506b0$@gmail.com> There is a difference. When we did inter-process communication at DEC, we called it " inter-process communication" we didn't abbreviate it to IPC. Of course, communication was generally oral and you'd be amazed at how little inter-process communication is done when your writing an exec. You'll probably find me asking other questions like this especially around acronyms. Renee -----Original Message----- From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of Bill Pedersen Sent: Saturday, June 29, 2013 5:04 PM To: 'FreeVMS mailing list' Subject: Re: [FreeVMS] pager question Inter-Process Communications... This might be a good starting point: http://en.wikipedia.org/wiki/Microkernel Bill Pedersen CCSS - Computer Consulting System Services, LLC 211 Ruth Drive Gaffney, SC 29341 Telephone: 864-490-8863 Mobile: 408-892-5204 Facsimile: 206-984-3068 www: www.ccsscorp.com Skype Name: william.a.pedersen LinkedIn Profile: www.linkedin.com/in/billpedersen -----Original Message----- From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of Renee Sent: Saturday, June 29, 2013 4:38 PM To: 'FreeVMS mailing list' Subject: Re: [FreeVMS] pager question Guido... I hate doing this,,,but what does IPC stand for? Renee -----Original Message----- From: FreeVMS [mailto:freevms-bounces at rayleigh.systella.fr] On Behalf Of Guido Sent: Saturday, June 29, 2013 3:03 PM To: FreeVMS mailing list Subject: Re: [FreeVMS] pager question On Saturday 29 June 2013 18:10:16 BERTRAND Jo?l wrote: > When a process try to access to a unmapped page, it generates a > pagefault IPC. This IPC is received by an event handler loop in its > parent (for example, PAGER.SYS sends L4_PAGEFAULT IPC to VMSKERNEL.SYS > and all IPC are caught in sys/sys_loop.c). > > Child process does not know if its request can or will be done. It > only sends L4_PAGEFAULT IPC to its parent and waits for an answer. > This answer can be a new L4_MapItem() or a L4_AbortIpc_and_stop(). > Thus, I don't see why we need to separate L4_PAGEFAULT IPC in two IPC calls. The question is if the the process should try to access an unmapped page if it actually tries to allocate memory. Shouldn't the process try to request more pages first and wait for them to be mapped into its address space before it tries to access them? It seems to me that this makes the pagefault handling algorithm needlessly complex. The algorithm could as simple as "if the page is mapped, load it from cache or swap, otherwise kill the process". A pagefault should be an exception not a function. IMHO a page fault and a memory request are completely different and should not be combined into one IPC call. I'm afraid that combining them will in de long run this only hurt reliability, stability and maintainability of the OS. Regards, Guido _______________________________________________ FreeVMS mailing list FreeVMS at rayleigh.systella.fr https://www.systella.fr/cgi-bin/mailman/listinfo/freevms _______________________________________________ FreeVMS mailing list FreeVMS at rayleigh.systella.fr https://www.systella.fr/cgi-bin/mailman/listinfo/freevms _______________________________________________ FreeVMS mailing list FreeVMS at rayleigh.systella.fr https://www.systella.fr/cgi-bin/mailman/listinfo/freevms