Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - abwillis

Pages: 1 ... 14 15 [16] 17 18 ... 22
226
Comments, Suggestions & Questions / Re: New kernel
« on: 2009.05.03, 21:26:00 »
Who owns the intellectual rights to OS/2 and hence the OS/4 kernel. That is IBM not OS/4 team.  Well take a look up close at the source code of the WIN32K.SYS driver. I just tried to find it. The code for ODIN must be somewhere with the WIN32K.SYS driver from Knut. Thats one way of doing certain updates to the kernel.

Roderick Klein
Mensys
One piece that win32k.sys already can patch is allowing DLL files to not be bound by the 8.3 naming convention. 

227
Hardware / Re: Exceptions
« on: 2009.04.18, 19:00:40 »
I wish now I hadn't already reformatted (so I could check the exact message).  I had that type of error on my eCS 2.0 RC6a system.  Initially it was working fine but as I had done a migration I thought there was a chance there had been a problem there and didn't pursue it before just formatting and loading fresh.
Andy

228
Hardware / Re: LVM and USB flash disk
« on: 2009.04.09, 23:34:09 »
I have a RCA MP3 player that is formatted as Large Floppy Fat32.  Unfortunately, it also uses a non-standard 2048 bps instead of the standard 512.  Danin512.flt allows it to be read seen but if I then partition it under eCS then Windows can no longer handle it due to the bps conversion.  Fat16 large floppy can be handled via mo640 and then eCS and Windows can both read it and the MP3 player starts (which it didn't when Windows couldn't read it) but then it didn't see any of the files I put on it.  On this device the partitioned media I don't think is an issue as it can handle a 2Gb microSD card that I have partitioned with FAT32 and eCS and Windows and the MP3 player are all happy with it.
Andy

229
Internet / Re: Firefox 3.x
« on: 2009.04.04, 20:40:20 »
One thing that should be done with FF3, make sure IFE is not being used.  Antialiasing is being done in the browser now so does not need IFE and potentially could cause issues.  With FF3 Cairo is being used for the rendering.  The way the text is being rendered in Cairo is using freetype and fontconfig.  With the interface being built to allow rendering text the antialiasing came along as a by-product. 

230
The REXX code was owned by group A who decided to open source the code.  Group B owned the OS/2 REXX code.  I don't know the reason why, perhaps they were afraid there was IP owned by someone else or perhaps someone was to lazy to find the OS/2 code but Group B decided to not make their code available.  I am sure it had nothing to do with big iron as that code was probably released.  There have been at least 2 people start porting REXX.  One was using VAC and the other OW.  I started trying to just build it from the Linux codebase with GCC.  I didn't actually do anything but try to run configure and make and see where it got toi (not far as I recall) but the two others got along aways and then Life got in the way for them.  Unfortunately, their work was not available to pick up on.  I need to try again now that I have some improvements in my build system and using GCC 4.3.3.
Andy

231
I don't have personal experience so I cna just pass on the bits I've picked up.
First, make sure the virtualization support is turned on in the BIOS and hasn't been disabled.
Second, when installing eCS 2.0 RC6a (not 100% sure about RC6) choose the advanced options and there is an option to allow install in Virtual mode (don't recall the exact phrase but as I recall it is on the first page and it does say something about Virtual and is fairly obvious. 
Apart from this if there is anything needed then I haven't seen it yet.
Andy

232
Open Bounties / Re: SAGE OS/2-eCS Port Bounty
« on: 2009.02.06, 15:10:09 »
I started looking at it in September.  I made a bit of minor progress and laid it aside for other things.
The problem is the approach that was used for the build.  SAGE being a collection of apps that are built together means building several projects at one time.  This wouldn't be too bad, and in some ways would almost make it easier.  However, they tar these files in some format that means I have to try to recreate it, otherwise, all my changes are lost on the next make.  Each iteration of make untars each package regardless of any other consideration.  It took me awhile to figure out that I can't use the latest tar to work with the package as it didn't handle the piping that was being done. 
Now that GCC 4.3.3 is available, it may make it somewhat easier as I seem to recall having to do some work to get around having an "older" compiler.
The readme says:
Sage builds with GCC >= 3.x and GCC >= 4.1.x
http://www.sagemath.org/doc/inst/node5.html   says it has to be at least 3.4.x
it also says that 4.3.0 does not yet work.

233
Programming / Re: acpi cpu daemon
« on: 2009.02.02, 16:23:38 »
I've uploaded ACPIThrottle to hobbes.  While doing so I saw that there is a CPUspeed that I had forgotten about.  Unfortunately there is no source included with it.  I haven't tried it on the system I was wanting this for but didn't have much success with it in my testing on another system some time ago when I tried it.  I would recommend though, that people give it a shot as I think it is probably a better approach than mine.

Is this similar to the following program found on Hobbes?

http://hobbes.nmsu.edu/download/pub/os2/util/system/cpuspeed1.4.zip
Yes, that is the one I am referencing above.  It ties directly into acpi32.dll and started giving errors on my T42 during testing at some ACPI level.  I had forgotten about it when I decided I wanted to something like this on my Desktop system and haven't tried it there yet.
Andy

234
Programming / Re: acpi cpu daemon
« on: 2009.02.02, 00:41:26 »
I've uploaded ACPIThrottle to hobbes.  While doing so I saw that there is a CPUspeed that I had forgotten about.  Unfortunately there is no source included with it.  I haven't tried it on the system I was wanting this for but didn't have much success with it in my testing on another system some time ago when I tried it.  I would recommend though, that people give it a shot as I think it is probably a better approach than mine.

235
Programming / Re: gcc 4.3.3
« on: 2009.02.01, 22:20:16 »
GCC 4.3.3 requires GCC 3.3.5 for now.  The setup script assumes that 3.3.5 and 4.3.3 are both in \usr. 
If you look in \usr\local432 you will see a bin, lib, include, and a couple other directories.  These do not contain all the necessary files (I think mostly due to libc stuff) but rely on the 3.3.5 files.  By default 3.3.5 would go under \usr and have the bin, lib, include, and such directories.  If you have moved them elsewhere (as I have) then you need to point to that location in the script. 
Andy

236
Programming / Re: acpi cpu daemon
« on: 2009.02.01, 03:15:56 »
Also, setgetstate can be added as well as setgetthrtl.  I didn't do it here for 2 main reasons:
1)  setgetstate doesn't do anything on the machine I am using it on
2)  it has numerous possible states... my T42 which I don't use ACPI on has 5 states I think but the desktop machine I was working on this for shows 2 states, I don't know how to pull the number of states dynamically.

237
Programming / Re: acpi cpu daemon
« on: 2009.01.31, 23:35:31 »
I still don't know why some of the problems but this code works with GCC or OW.

Code: [Select]
#define INCL_BASE

  #include <os2.h>
  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>

/* #define DEBUG 1 */

  APIRET APIENTRY DosPerfSysCall(ULONG ulCommand, ULONG ulParm1,
                                 ULONG ulParm2, ULONG ulParm3);

  #define ORD_DOS32PERFSYSCALL       976
#ifndef CMD_KI_RDCNT
  #define CMD_KI_RDCNT            (0x63)

  typedef struct _CPUUTIL {
    ULONG ulTimeLow;     /* Low 32 bits of time stamp      */
    ULONG ulTimeHigh;    /* High 32 bits of time stamp     */
    ULONG ulIdleLow;     /* Low 32 bits of idle time       */
    ULONG ulIdleHigh;    /* High 32 bits of idle time      */
    ULONG ulBusyLow;     /* Low 32 bits of busy time       */
    ULONG ulBusyHigh;    /* High 32 bits of busy time      */
    ULONG ulIntrLow;     /* Low 32 bits of interrupt time  */
    ULONG ulIntrHigh;    /* High 32 bits of interrupt time */
   } CPUUTIL;

  typedef CPUUTIL *PCPUUTIL;
#endif

  /* Convert 8-byte (low, high) time value to double */
  #define LL2F(high, low) (4294967296.0*(high)+(low))

  /* This is a 1 processor example */
  int main (int argc, char *argv[])
  {
     APIRET      rc;
     int         i, iter, sleep_sec, cputhrtl50;
     double      ts_val, ts_val_prev;
     double      idle_val, idle_val_prev;
     double      busy_val, busy_val_prev;
     double      intr_val, intr_val_prev;
     CPUUTIL     CPUUtil;

     if ((argc < 2) || (*argv[1] < '1') || (*argv[1] > '9')) {
     sleep_sec = 5;
     } else
     sleep_sec = *argv[1] - '0';


     cputhrtl50 = 100;
     iter = 0;
     do {
         rc = DosPerfSysCall(CMD_KI_RDCNT,(ULONG) &CPUUtil,0,0);
         if (rc) {
             fprintf(stderr, "CMD_KI_RDCNT failed rc = %d\n",rc);
             exit(1);
         }
         ts_val = LL2F(CPUUtil.ulTimeHigh, CPUUtil.ulTimeLow);
         idle_val = LL2F(CPUUtil.ulIdleHigh, CPUUtil.ulIdleLow);
         busy_val = LL2F(CPUUtil.ulBusyHigh, CPUUtil.ulBusyLow);
         intr_val = LL2F(CPUUtil.ulIntrHigh, CPUUtil.ulIntrLow);

         if (iter > 0) {
             double  ts_delta = ts_val - ts_val_prev;
#ifdef DEBUG
             printf("idle: %4.2f%%  busy: %4.2f%%  intr: %4.2f%%\n",
                    (idle_val - idle_val_prev)/ts_delta*100.0,
                    (busy_val - busy_val_prev)/ts_delta*100.0,
                    (intr_val - intr_val_prev)/ts_delta*100.0);
#endif

         if (((idle_val - idle_val_prev)/ts_delta*100.0) > 75){
         if (((idle_val - idle_val_prev)/ts_delta*100.0) > 85){
         if (((idle_val - idle_val_prev)/ts_delta*100.0) > 90){
             if (cputhrtl50 != 15){
             system( "setgetthrtl 0 15");
             cputhrtl50 = 15;}} else
             if (cputhrtl50 != 25){
             system( "setgetthrtl 0 25");
             cputhrtl50 = 25;}} else
             if (cputhrtl50 != 50){
             system( "setgetthrtl 0 50");
             cputhrtl50 = 50;}}


         if (((idle_val - idle_val_prev)/ts_delta*100.0) < 35){
         if (((idle_val - idle_val_prev)/ts_delta*100.0) < 25){
         if (((idle_val - idle_val_prev)/ts_delta*100.0) < 10){
             if (cputhrtl50 != 100){
             system( "setgetthrtl 0 100");
             cputhrtl50 = 100;}} else
             if (cputhrtl50 != 75){
             system( "setgetthrtl 0 75");
             cputhrtl50 = 75;}} else
             if (cputhrtl50 != 50){
             system( "setgetthrtl 0 50");
             cputhrtl50 = 50;}}

         }

         ts_val_prev = ts_val;
         idle_val_prev = idle_val;
         busy_val_prev = busy_val;
         intr_val_prev = intr_val;

         iter = 1;
         DosSleep(1000*sleep_sec);

     } while (1);
return 0;
  }

238
Programming / Re: acpi cpu daemon
« on: 2009.01.31, 21:27:45 »
I had compiled this with gcc 335 and 432 but decided to try OpenWatcom to have the code checked by another compiler. 

  #define CMD_KI_RDCNT              (0x63)

  typedef struct _CPUUTIL {
    ULONG ulTimeLow;     /* Low 32 bits of time stamp      */
    ULONG ulTimeHigh;    /* High 32 bits of time stamp     */
    ULONG ulIdleLow;     /* Low 32 bits of idle time       */
    ULONG ulIdleHigh;    /* High 32 bits of idle time      */
    ULONG ulBusyLow;     /* Low 32 bits of busy time       */
    ULONG ulBusyHigh;    /* High 32 bits of busy time      */
    ULONG ulIntrLow;     /* Low 32 bits of interrupt time  */
    ULONG ulIntrHigh;    /* High 32 bits of interrupt time */
   } CPUUTIL;

Watcom complained of the above being redefined so I used #if to remove it.  On the single core cpu I am building it on it behaves as expected... However, on the SMP system it does not appear to properly read the idle times, unless I #define DEBUG which right now only turns on a single printf.
OW 1.7a.
Hmm, bizarre, I just found that GCC does not work correctly with the #if on the abovein place either.  It, however, it does not work if DEBUG is defined as OW does.  The code compiles but it never executes the setgetthrtl code. 
If, for instance, I use #if _GCC_ and don't define _GCC_ then GCC compile fails but OW succeeds.  However, if _GCC_ is compiled it is just the opposite and all makes sense to me at up to this point.  However, when I execute the code nothing seems to occur with either compiler in terms of executing the setgetthrtl.exe.  If I define DEBUG then the code does execute for OW but not GCC.
As another data point... I just removed the entire section of code and built with OW and it still behaves the same as with the #if in place (thought it might do differently just because GCC did).  None of this part is making any sense to me.

239
Programming / acpi cpu daemon
« on: 2009.01.31, 20:45:46 »
eCS's ACPI does not currently have any way to automatically throttle the CPU when not needed.  If running ACPI you either run at full or you can manually use setgetthrtl.exe but this is mostly for testing as it isn't convenient for actual use as you would then have to set the throttle back up manually as well. Here is some code to watch the cpu usage and change the throttle respectively.  This code is not real dynamic right now but appears to more or less do the job.  I am hoping others will also pick this up and maybe come up with something until a better approach is found.  I am running this program on a hyperthreading SMP system (one CPU but is being seen and used as 2) running eCS 2.0 rc6a.  RC6a puts setgetthrtl.exe into the boot:\ecs\bin  if ACPI was installed from the Betazone on another system then it is in the utils directory and setgetthrtl.exe either has to be in the path or in the same directory as the executable.
The bulk of the code I got from edm2, which in turn came from the SMP addendum.inf from the OS2 toolkit.  I have left in currently the ability to set the time for the checks between 1-9 seconds, I changed from failing if no number is given to defaulting to 5 seconds. 
I am open to better code suggestions :)
I am very interested in opinions on the best timing for how often to do the cpu checks.
I have been thinking it may be a good idea to boost the priority, should it run at normal priority but higher delta? or foreground server? time critical?
I have currently just selected throttle settings to idle settings to what seemed like they would work OK, better ideas for this?
From what I can tell, you cannot set the throttle settings independently on various processors so I only set CPU 0, however, I only have a hyperthreading machine to check on and not a true SMP system... if setgetthrtl.exe is run with no switches then it will show current throttle state (2nd CPU here show throttle disabled). The parameters for setgetthrtl.exe are cpu number (starting at 0) and throttle (mine shows min 13 and max 100).
And now for the code :)
Code: [Select]
#define INCL_BASE

  #include <os2.h>
  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>

#define DEBUG 0

  APIRET APIENTRY DosPerfSysCall(ULONG ulCommand, ULONG ulParm1,
                                 ULONG ulParm2, ULONG ulParm3);

  #define ORD_DOS32PERFSYSCALL       976
  #define CMD_KI_RDCNT            (0x63)

  typedef struct _CPUUTIL {
    ULONG ulTimeLow;     /* Low 32 bits of time stamp      */
    ULONG ulTimeHigh;    /* High 32 bits of time stamp     */
    ULONG ulIdleLow;     /* Low 32 bits of idle time       */
    ULONG ulIdleHigh;    /* High 32 bits of idle time      */
    ULONG ulBusyLow;     /* Low 32 bits of busy time       */
    ULONG ulBusyHigh;    /* High 32 bits of busy time      */
    ULONG ulIntrLow;     /* Low 32 bits of interrupt time  */
    ULONG ulIntrHigh;    /* High 32 bits of interrupt time */
   } CPUUTIL;

  typedef CPUUTIL *PCPUUTIL;

  /* Convert 8-byte (low, high) time value to double */
  #define LL2F(high, low) (4294967296.0*(high)+(low))

  /* This is a 1 processor example */
  int main (int argc, char *argv[])
  {
     APIRET      rc;
     int         i, iter, sleep_sec, cputhrtl50;
     double      ts_val, ts_val_prev;
     double      idle_val, idle_val_prev;
     double      busy_val, busy_val_prev;
     double      intr_val, intr_val_prev;
     CPUUTIL     CPUUtil;

     if ((argc < 2) || (*argv[1] < '1') || (*argv[1] > '9')) {
     sleep_sec = 5;
     } else
     sleep_sec = *argv[1] - '0';


     cputhrtl50 = 100;
     iter = 0;
     do {
         rc = DosPerfSysCall(CMD_KI_RDCNT,(ULONG) &CPUUtil,0,0);
         if (rc) {
             fprintf(stderr, "CMD_KI_RDCNT failed rc = %d\n",rc);
             exit(1);
         }
         ts_val = LL2F(CPUUtil.ulTimeHigh, CPUUtil.ulTimeLow);
         idle_val = LL2F(CPUUtil.ulIdleHigh, CPUUtil.ulIdleLow);
         busy_val = LL2F(CPUUtil.ulBusyHigh, CPUUtil.ulBusyLow);
         intr_val = LL2F(CPUUtil.ulIntrHigh, CPUUtil.ulIntrLow);

         if (iter > 0) {
             double  ts_delta = ts_val - ts_val_prev;
#if DEBUG
             printf("idle: %4.2f%%  busy: %4.2f%%  intr: %4.2f%%\n",
                    (idle_val - idle_val_prev)/ts_delta*100.0,
                    (busy_val - busy_val_prev)/ts_delta*100.0,
                    (intr_val - intr_val_prev)/ts_delta*100.0);
#endif

         if (((idle_val - idle_val_prev)/ts_delta*100.0) > 75){
         if (((idle_val - idle_val_prev)/ts_delta*100.0) > 85){
         if (((idle_val - idle_val_prev)/ts_delta*100.0) > 90){
             if (cputhrtl50 != 15){
             system( "setgetthrtl 0 15");
             cputhrtl50 = 15;}} else
             if (cputhrtl50 != 25){
             system( "setgetthrtl 0 25");
             cputhrtl50 = 25;}} else
             if (cputhrtl50 != 50){
             system( "setgetthrtl 0 50");
             cputhrtl50 = 50;}}


         if (((idle_val - idle_val_prev)/ts_delta*100.0) < 35){
         if (((idle_val - idle_val_prev)/ts_delta*100.0) < 25){
         if (((idle_val - idle_val_prev)/ts_delta*100.0) < 10){
             if (cputhrtl50 != 100){
             system( "setgetthrtl 0 100");
             cputhrtl50 = 100;}} else
             if (cputhrtl50 != 75){
             system( "setgetthrtl 0 75");
             cputhrtl50 = 75;}} else
             if (cputhrtl50 != 50){
             system( "setgetthrtl 0 50");
             cputhrtl50 = 50;}}

         }

         ts_val_prev = ts_val;
         idle_val_prev = idle_val;
         busy_val_prev = busy_val;
         intr_val_prev = intr_val;

         iter++;
         DosSleep(1000*sleep_sec);

     } while (1);
  }

240
Multimedia / Re: flash player and warpvision
« on: 2009.01.16, 22:36:32 »
ftp://ftp.netlabs.org/pub/wvgui/wvgui1.01.wpi
Warpvision works well for me, I either use Warpvision or mplayer... I haven't had time to really play with smplayer and it'll need a bit of playing to get it working well here.
There is also a newer Warpvision in the wvgui directory labeled as a testcase.  I don't recall how well the testcase worked.  I don't recall if I am using 1.01 or from a later codebase I build from SVN (there was a point the SVN code didn't work well and I don't recall which files I am using).
Andy

Pages: 1 ... 14 15 [16] 17 18 ... 22