Mail Archives: djgpp-workers/2001/11/23/23:52:31
Eli,
Is this is the info you wanted? The DOS system call is Int 21h, Function
36h, called via __dpmi_int(0x21, ®s). AX appears to be returning the
wrong number of sectors per cluster. I determined experimentally and via
PartitionMagic that the cluster size for my C: drive is 1K, so I expect AX
to be 2 and CX to be 512, but AX is set to 64. free*bsize gives a number
that's close to the free space, but blocks is about half what it should be
(assuming bsize is correct - which it isn't).
My libc.a is:
DJGPP libc built Nov 5 2001 22:01:02 by gcc 2.95.3 20010315/djgpp
(release) $
Thanks,
Dennis
(gdb) s
statfs (path=0x1e01 "c:/", buf=0x93304) at statfs.c:146
146 if( 7 <= _osmajor && _osmajor < 10 ) /* Are INT21 AX=7303 and/or
(gdb) s
243 if( ! cdrom_calls_used )
(gdb) s
245 if( use_AH0x36( drive_number, &blocks, &free, &bsize ) == -1 )
(gdb) s
use_AH0x36 (drive_number=2, blocks=0x93274, free=0x93270, bsize=0x9326c)
at statfs.c:104
104 regs.h.ah = 0x36; /* DOS Get Free Disk Space call */
(gdb) s
105 regs.h.dl = drive_number + 1;
(gdb) s
106 __dpmi_int(0x21, ®s);
(gdb) s
109 if ((regs.x.ax & 0xffff) == 0xffff)
(gdb) s
114 *bsize = regs.x.cx * regs.x.ax;
(gdb) s
115 *free = regs.x.bx;
(gdb) s
116 *blocks = regs.x.dx;
(gdb) s
118 return 0;
(gdb) p regs.x.cx
$2 = 512
(gdb) p regs.x.ax
$3 = 64
(gdb) p bsize
$4 = (long *) 0x9326c
(gdb) p *bsize
$5 = 32768
(gdb) where
#0 use_AH0x36 (drive_number=2, blocks=0x93274, free=0x93270, bsize=0x9326c)
at statfs.c:118
#1 0x26aa in statfs (path=0x1e01 "c:/", buf=0x93304) at statfs.c:245
#2 0x1ecf in main (argc=1, argv=0x93c44) at statfsdbg.c:16
#3 0x416f in __crt1_startup ()
----- Original Message -----
From: "Eli Zaretskii" <eliz AT is DOT elta DOT co DOT il>
To: "Dennis Louie" <dennis-louie AT att DOT net>
Cc: <djgpp-workers AT delorie DOT com>
Sent: Friday, November 23, 2001 12:31 AM
Subject: Re: statfs not returning correct cluster size
> > From: "Dennis Louie" <dennis-louie AT att DOT net>
> > Date: Thu, 22 Nov 2001 21:58:24 -0800
> >
> > Has anyone encountered a problem with statfs not returning the correct
> > info in DJGPP 2.04 for Win2K/XP? I'm running XP Pro.
> >
> > I have partitions with 1K and 4K cluster sizes, but statfs returns 32K
> > for both. It also appears to be returning incorrect values for
> > f_blocks, even for disk sizes under 2GB. I seem to be getting the
> > correct info for a 1.4MB floppy disk.
>
> Thanks for reporting this.
>
> Please step with a debugger into statfs, and see which system call
> returns the incorrect info. Then post the results here.
>
- Raw text -