Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-28 Thread Jan Nieuwenhuizen
Christopher Faylor writes:

Is Cygwin killing hard drives ?

 In my case, the hard drive has never seen cygwin, even the cygwin source
 code, so if it is, it would be action at a distance.

Wow, that Cygwin software is even more poweful than I imagined :-P

Jan.

-- 
Jan Nieuwenhuizen [EMAIL PROTECTED] | GNU LilyPond - The music typesetter
http://www.xs4all.nl/~jantien   | http://www.lilypond.org

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



RE: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-28 Thread Dave Korn
 -Original Message-
 From: cygwin-owner On Behalf Of Christopher Faylor
 Sent: 27 June 2004 01:23

 On Sat, Jun 26, 2004 at 10:45:51PM +0100, Mark Thornton wrote:
 Pierre A. Humblet wrote:
 
 On Sat, Jun 26, 2004 at 01:09:40PM -0400, Christopher Faylor wrote:
  
 
 On Sat, Jun 26, 2004 at 12:05:54PM -0400, Pierre A. Humblet wrote:

 
 Beware, I found this:
 2000-05-19  DJ Delorie  [EMAIL PROTECTED]
   * libc/include/stdio.h: no getc/putc macros for cygwin; causes
   compatibility issues with different dll versions
 so you may need to recompile when updating cygwin.
  
 
 Also wouldn't that work around the file locks that were 
 ostensibly put
 there for a reason?

 
 
 That crossed my mind. But there is no file lock in the 
 macro, which is
 used by systems other than cygwin. How do they manage it?
 I also assume that single threaded programs don't need the lock.
  
 Is the lock to ensure that normal POSIX append semantics are obtained
 when two processes are writing to the same file?  Normal win32
 behaviour would tend to overwrite whatever had been written by the
 other process
 
 No.  newlib is supposed to be OS agnostic.  The locks are certainly
 for multi-threaded purposes.
 
 Anyone who is interested could always ask in the newlib mailing list.
 newlib sourceware org.
 
 cgf


  Those flockfile calls are part of Tom Pfaff's recent fixes to make stdio
multithread-safe.  Without them you can't even have multiple threads calling
printf at the same time without their outputs corrupting each other.


cheers, 
  DaveK
-- 
Can't think of a witty .sigline today


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-27 Thread Pierre A. Humblet
On Sun, Jun 27, 2004 at 03:42:05PM -0400, Christopher Faylor wrote:
 On Sat, Jun 26, 2004 at 01:41:45PM -0400, Pierre A. Humblet wrote:

 Digging deeper, I see there is a function getc_unlocked. Using it
 instead of getc improves the speed by a factor 5. 
 Now that I know about it, I will redefine getc to getc_unlocked when
 porting single threaded applications.
 
 That issue may be a factor in the legendary slowness of Cygwin.
 
 FWIW, I added some code to this particular locking function to avoid
 doing any locks if there is only one thread.  I'm generating a snapshot
 now.  It will be interesting to see if it improves things.  I didn't
 do any benchmarking.  I just verified that it worked the way I thought
 it should by looking at strace output.

Here it is, using a slightly modified version of Joseph's program
http://cygwin.com/ml/cygwin/2004-06/msg00877.html

Your change makes getc work almost as fast a getc_unlocked.
This is on Win98. Yesterday's results were on WinME, where the
differences were larger. That hard drive died this morning :(

CYGWIN_98-4.10 Worldnet 1.5.10(0.116/4/2) 2004-05-25 22:07 i586 unknown unknown Cygwin

W:~: time a.exe daqsystem.pdf 1  (read)
real0m0.282s
W:~: time a.exe daqsystem.pdf 2  (getc_unlocked)
real0m1.295s
W:~: time a.exe daqsystem.pdf 3  (getc)
real0m3.188s

CYGWIN_98-4.10 Worldnet 1.5.11s(0.116/4/2) 20040627 15:47:35 i586 unknown unknown 
Cygwin

W:~: time a.exe daqsystem.pdf 1   (read)
real0m0.275s
W:~: time a.exe daqsystem.pdf 2   (getc_unlocked)
real0m1.294s
W:~: time a.exe daqsystem.pdf 3   (getc)
real0m1.343s 

Pierre

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-27 Thread Christopher Faylor
On Sun, Jun 27, 2004 at 05:29:50PM -0400, Pierre A. Humblet wrote:
On Sun, Jun 27, 2004 at 03:42:05PM -0400, Christopher Faylor wrote:
 On Sat, Jun 26, 2004 at 01:41:45PM -0400, Pierre A. Humblet wrote:

 Digging deeper, I see there is a function getc_unlocked. Using it
 instead of getc improves the speed by a factor 5. 
 Now that I know about it, I will redefine getc to getc_unlocked when
 porting single threaded applications.
 
 That issue may be a factor in the legendary slowness of Cygwin.
 
 FWIW, I added some code to this particular locking function to avoid
 doing any locks if there is only one thread.  I'm generating a snapshot
 now.  It will be interesting to see if it improves things.  I didn't
 do any benchmarking.  I just verified that it worked the way I thought
 it should by looking at strace output.

Here it is, using a slightly modified version of Joseph's program
http://cygwin.com/ml/cygwin/2004-06/msg00877.html

Your change makes getc work almost as fast a getc_unlocked.
This is on Win98. Yesterday's results were on WinME, where the
differences were larger. That hard drive died this morning :(

Sorry to hear that.  I've been going through hard disk problems
myself.

Thanks for verifying that the change worked.

cgf

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-27 Thread Frédéric L. W. Meunier
On Sun, 27 Jun 2004, Christopher Faylor wrote:
On Sun, Jun 27, 2004 at 05:29:50PM -0400, Pierre A. Humblet wrote:
Your change makes getc work almost as fast a getc_unlocked.
This is on Win98. Yesterday's results were on WinME, where the
differences were larger. That hard drive died this morning :(
Sorry to hear that.  I've been going through hard disk problems
myself.
Is Cygwin killing hard drives ?
--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/


Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-27 Thread Christopher Faylor
On Sun, Jun 27, 2004 at 11:52:29PM -0300, Fr?d?ric L. W. Meunier wrote:
On Sun, 27 Jun 2004, Christopher Faylor wrote:

On Sun, Jun 27, 2004 at 05:29:50PM -0400, Pierre A. Humblet wrote:
Your change makes getc work almost as fast a getc_unlocked.
This is on Win98. Yesterday's results were on WinME, where the
differences were larger. That hard drive died this morning :(

Sorry to hear that.  I've been going through hard disk problems
myself.

Is Cygwin killing hard drives ?

In my case, the hard drive has never seen cygwin, even the cygwin source
code, so if it is, it would be action at a distance.

cgf

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-27 Thread sevenrider
Thank you to everyone for your help
with my question. I hope the responses
may also have been of some use to others
besides me. I will download the new dll
from http://www.cygwin.com/snapshots/
and see if it fixes my problems.
Actually I upgraded from a 1.1.x
version of Cygwin which is why I asked
about the mounts. I guess that was
not really relevant. I will try the
settings for text mode that were
suggested also. I think I had almost
those same settings though and I was
getting textmode when I specified
absolute paths like /tmp/foo.txt but
binmode for the same file if I called it
foo.txt while in the /tmp/ directory.
Apart from that I have not had any
really serious issues (that I know
of!) in upgrading, so I am very impressed
with the stability of the package.
Thanks again

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-26 Thread Joseph
Thanks to those who responded to my post.
I am not sure though if all of you read the
entire sequence of the thread.
In my first post, I did attach an excerpt
from an strace dump of a sample program that
seemed to show where the time is going.
Here is the relevant information again in case
it was missed the first time (showing longest
operations in the strace dump):
171674 127276583 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
158323 5071628 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
144645 74466322 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
133088 48059 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
118305 4774629 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
115336 6690357 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
114418 79036229 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
113172 69211692 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
112608 6888268 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
108520 47854275 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
107589 6137061 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
106538 69397028 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
106369 1959755 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
12 67943460 [main] test1 613445 fhandler_base::set_flags: flags 
0x11, supplied_bin 0x0
99220 64838744 [main] test1 613445 setmode_helper: improbable, but 2 != 3
96976 110763753 [main] test1 613445 setmode_helper: improbable, but 0 != 3

The program I am tracing simply opens a large file
(about 7 MB) with fopen and then reads characters
from it with getc, and does nothing else.
It takes about 10-20 times longer than a
program which opens the same file with open
and reads it with read. In the strace of this
faster program, the time is dominated by calls
to readv.
In my original post I also included the
output of cygcheck on my system. Please
advise if I should post this again.
Also if it would help to see the lines in the
strace dump in context, as opposed to sorted
by duration of each operation, I could post
that.
Based on the instructions listed at the
problems.html webpage on the Cygwin site,
I thought this was sufficient information
to begin a request for assistance. I do
not really understand what you are advising
me to do beyond this when you say I
should debug cygwin. I sure would
appreciate some guidance in how to do this.
Possibly I should add that I am comparing
the behavior of version 1.5.10 to a much
older version that I was using before. So
whatever is causing this odd behavior on
my system may not be a feature that was new
to version 1.5.10. I am thinking somehow
that it might in fact have something to do
with how mounts are handled differently
in more recent versions. Previously I did
not have to mount any directories, now
though I am having trouble finding any
set of mount commands that will allow me
to open files in text mode by default,
which was how the earlier version of cygwin
I had worked. Nor does setting the CYGWIN
environment variable to nobinmode seem to
have any effect.
Thanks again for any help
--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/


RE: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-26 Thread GARY VANSICKLE
 
 Possibly I should add that I am comparing the behavior of 
 version 1.5.10 to a much older version that I was using 
 before.

It wasn't by chance... oh... say... B20? ;-)

 So whatever is causing this odd behavior on my system 
 may not be a feature that was new to version 1.5.10. I am 
 thinking somehow that it might in fact have something to do 
 with how mounts are handled differently in more recent 
 versions. Previously I did not have to mount any directories, 

Yikes.  I can't recall a time when you didn't have to mount directories, and
I've been round these parts forever.  That must be some *old* Cygwin!

 now though I am having trouble finding any set of mount 
 commands that will allow me to open files in text mode by 
 default, which was how the earlier version of cygwin I had 
 worked. Nor does setting the CYGWIN environment variable to 
 nobinmode seem to have any effect.

Don't worry about the CYGWIN var anymore, it's all mounts these days.
mount --help and umount --help is what you want.  Set up your mount
table like this:

C:\unix\bin on /usr/bin type system (textmode)
C:\unix\lib on /usr/lib type system (textmode)
C:\unix on / type system (textmode)
c: on /cygdrive/c type user (textmode,noumount)
d: on /cygdrive/d type user (textmode,noumount)
e: on /cygdrive/e type user (textmode,noumount)

And you're all set.  You have to umount before mounting if any of the
directories are already mounted unfortunately (last I checked anyway).

-- 
Gary R. Van Sickle
 

 
 
 --
 Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
 Problem reports:   http://cygwin.com/problems.html
 Documentation: http://cygwin.com/docs.html
 FAQ:   http://cygwin.com/faq/
 


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-26 Thread Pierre A. Humblet
On Sat, Jun 26, 2004 at 02:36:52AM -0400, Joseph wrote:
 Thanks to those who responded to my post.
 
 I am not sure though if all of you read the
 entire sequence of the thread.
 
 In my first post, I did attach an excerpt
 from an strace dump of a sample program that
 seemed to show where the time is going.

You initial accusation against set_flags was unfounded
and led nowhere. But you have a very good point.

Your fast program is doing reads in blocks of 1024.
Your slow program is using getc.

I observed that the slow program was 20 times slower
than the fast one, even though strace showed that getc
was properly calling read in blocks of 1024.

I then noticed that getc is not implemented as a macro
on Cygwin. It's a newlib function
 
74  int
75  _DEFUN(getc, (fp),
76 register FILE *fp)
77  {
78int result;
79_flockfile (fp);
80/* CHECK_INIT is called (eventually) by __srefill.  */
81result = __sgetc (fp);
82_funlockfile (fp);
83return result;
(gdb) 
84  }

_flockfile calls a bunch of pthread functions. That's where all
the time is spent, a large part of it verifying that pointers
are valid.

It's probably a relatively new feature of Cygwin. Others may know
more about the history and justification of implementation.

Pierre

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-26 Thread Pierre A. Humblet
On Sat, Jun 26, 2004 at 11:45:04AM -0400, Pierre A. Humblet wrote:
 On Sat, Jun 26, 2004 at 02:36:52AM -0400, Joseph wrote:
  Thanks to those who responded to my post.
  
  I am not sure though if all of you read the
  entire sequence of the thread.
  
  In my first post, I did attach an excerpt
  from an strace dump of a sample program that
  seemed to show where the time is going.
 
 You initial accusation against set_flags was unfounded
 and led nowhere. But you have a very good point.
 
 Your fast program is doing reads in blocks of 1024.
 Your slow program is using getc.
 
 I observed that the slow program was 20 times slower
 than the fast one, even though strace showed that getc
 was properly calling read in blocks of 1024.
 
 I then noticed that getc is not implemented as a macro
 on Cygwin. It's a newlib function

As you seem to care about a 20x speed increase, you can regain the
speed by editing stdio.h, letting getc be a macro on Cygwin.

Beware, I found this:
2000-05-19  DJ Delorie  [EMAIL PROTECTED]
* libc/include/stdio.h: no getc/putc macros for cygwin; causes
compatibility issues with different dll versions
so you may need to recompile when updating cygwin.

Pierre

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



RE: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-26 Thread Igor Pechtchanski
On Sat, 26 Jun 2004, GARY VANSICKLE wrote:

 [snip]
 You have to umount before mounting if any of the directories are already
 mounted unfortunately (last I checked anyway).

Take a look a the -f option to mount.
Igor
-- 
http://cs.nyu.edu/~pechtcha/
  |\  _,,,---,,_[EMAIL PROTECTED]
ZZZzz /,`.-'`'-.  ;-;;,_[EMAIL PROTECTED]
 |,4-  ) )-,_. ,\ (  `'-'   Igor Pechtchanski, Ph.D.
'---''(_/--'  `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

I have since come to realize that being between your mentor and his route
to the bathroom is a major career booster.  -- Patrick Naughton

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-26 Thread Christopher Faylor
On Sat, Jun 26, 2004 at 12:05:54PM -0400, Pierre A. Humblet wrote:
Beware, I found this:
2000-05-19  DJ Delorie  [EMAIL PROTECTED]
   * libc/include/stdio.h: no getc/putc macros for cygwin; causes
   compatibility issues with different dll versions
so you may need to recompile when updating cygwin.

Also wouldn't that work around the file locks that were ostensibly put
there for a reason?

cgf

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-26 Thread Pierre A. Humblet
On Sat, Jun 26, 2004 at 01:09:40PM -0400, Christopher Faylor wrote:
 On Sat, Jun 26, 2004 at 12:05:54PM -0400, Pierre A. Humblet wrote:
 Beware, I found this:
 2000-05-19  DJ Delorie  [EMAIL PROTECTED]
  * libc/include/stdio.h: no getc/putc macros for cygwin; causes
  compatibility issues with different dll versions
 so you may need to recompile when updating cygwin.
 
 Also wouldn't that work around the file locks that were ostensibly put
 there for a reason?

That crossed my mind. But there is no file lock in the macro, which is
used by systems other than cygwin. How do they manage it?
I also assume that single threaded programs don't need the lock.

I would be perfectly happy to have a thread-unsafe getc/putc macro,
and to use fgetc/fputc when I care about multithreading.

Digging deeper, I see there is a function getc_unlocked. Using it
instead of getc improves the speed by a factor 5. 
Now that I know about it, I will redefine getc to getc_unlocked when
porting single threaded applications.

That issue may be a factor in the legendary slowness of Cygwin.

Pierre

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-26 Thread Christopher Faylor
On Sat, Jun 26, 2004 at 01:41:45PM -0400, Pierre A. Humblet wrote:
On Sat, Jun 26, 2004 at 01:09:40PM -0400, Christopher Faylor wrote:
 On Sat, Jun 26, 2004 at 12:05:54PM -0400, Pierre A. Humblet wrote:
 Beware, I found this:
 2000-05-19  DJ Delorie  [EMAIL PROTECTED]
 * libc/include/stdio.h: no getc/putc macros for cygwin; causes
 compatibility issues with different dll versions
 so you may need to recompile when updating cygwin.
 
 Also wouldn't that work around the file locks that were ostensibly put
 there for a reason?

That crossed my mind. But there is no file lock in the macro, which is
used by systems other than cygwin. How do they manage it?

They may not care of about this.

That issue may be a factor in the legendary slowness of Cygwin.

AFAICT, this lock was introduced in April so if it is part of the legend
it has grown to prominence very quickly.

cgf

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-26 Thread Mark Thornton
Pierre A. Humblet wrote:
On Sat, Jun 26, 2004 at 01:09:40PM -0400, Christopher Faylor wrote:
 

On Sat, Jun 26, 2004 at 12:05:54PM -0400, Pierre A. Humblet wrote:
   

Beware, I found this:
2000-05-19  DJ Delorie  [EMAIL PROTECTED]
	* libc/include/stdio.h: no getc/putc macros for cygwin; causes
	compatibility issues with different dll versions
so you may need to recompile when updating cygwin.
 

Also wouldn't that work around the file locks that were ostensibly put
there for a reason?
   

That crossed my mind. But there is no file lock in the macro, which is
used by systems other than cygwin. How do they manage it?
I also assume that single threaded programs don't need the lock.
 

Is the lock to ensure that normal POSIX append semantics are obtained 
when two processes are writing to the same file? Normal win32 behaviour 
would tend to overwrite whatever had been written by the other process 
unless the file is only opened once and then the handle duplicated (very 
messy). So if you want append mode to work correctly (i.e. Unix style), 
then you always have to use file locks around any file write operation 
that is expected to be atomic. The locks could be avoided for non append 
mode writes and where the file has been exclusively locked anyway.

Single thread programs will need the lock just as much as multithread. 
You can only avoid it if you just a single process (with just one thread),.

Mark Thornton
--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/


Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-26 Thread Christopher Faylor
On Sat, Jun 26, 2004 at 10:45:51PM +0100, Mark Thornton wrote:
Pierre A. Humblet wrote:

On Sat, Jun 26, 2004 at 01:09:40PM -0400, Christopher Faylor wrote:
 

On Sat, Jun 26, 2004 at 12:05:54PM -0400, Pierre A. Humblet wrote:
   

Beware, I found this:
2000-05-19  DJ Delorie  [EMAIL PROTECTED]
* libc/include/stdio.h: no getc/putc macros for cygwin; causes
compatibility issues with different dll versions
so you may need to recompile when updating cygwin.
 

Also wouldn't that work around the file locks that were ostensibly put
there for a reason?
   


That crossed my mind. But there is no file lock in the macro, which is
used by systems other than cygwin. How do they manage it?
I also assume that single threaded programs don't need the lock.
 
Is the lock to ensure that normal POSIX append semantics are obtained
when two processes are writing to the same file?  Normal win32
behaviour would tend to overwrite whatever had been written by the
other process

No.  newlib is supposed to be OS agnostic.  The locks are certainly
for multi-threaded purposes.

Anyone who is interested could always ask in the newlib mailing list.
newlib sourceware org.

cgf

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-23 Thread Brian Ford
On Tue, 22 Jun 2004, sevenrider wrote:

 I am just asking again about this problem in
 the hopes that someone might have anything to
 suggest. It seems that fopen is 10 to 20 times
 slower than open on my I/O operations due
 to large delays in executing a system call
 set_flags. I will have to rewrite all my
 code and abandon most of the text utility
 programs like grep and sort unless I can
 figure out what is going on. Any help, just
 simple reference to what set_flags means
 in the strace dump, would be very much
 appreciated.

If you have not made any progress on this, could you send me your strace
output and a sample program if possible?  I'd like to look at it as my
time permits.  If you prefer, personal email is fine.  Thanks.

-- 
Brian Ford
Senior Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained pilot...

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-23 Thread Brian Ford
Uh..., nevermind.  That's what I get for reading the thread backward.
Sorry for the noise.  I'll take a look.

On Wed, 23 Jun 2004, Brian Ford wrote:

 If you have not made any progress on this, could you send me your strace
 output and a sample program if possible?  I'd like to look at it as my
 time permits.  If you prefer, personal email is fine.  Thanks.

-- 
Brian Ford
Senior Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained pilot...

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-22 Thread sevenrider
I am just asking again about this problem in
the hopes that someone might have anything to
suggest. It seems that fopen is 10 to 20 times
slower than open on my I/O operations due
to large delays in executing a system call
set_flags. I will have to rewrite all my
code and abandon most of the text utility
programs like grep and sort unless I can
figure out what is going on. Any help, just
simple reference to what set_flags means
in the strace dump, would be very much
appreciated.

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-22 Thread Christopher Faylor
On Tue, Jun 22, 2004 at 11:14:17PM -0400, [EMAIL PROTECTED] wrote:
I am just asking again about this problem in the hopes that someone
might have anything to suggest.  It seems that fopen is 10 to 20 times
slower than open on my I/O operations due to large delays in executing
a system call set_flags.  I will have to rewrite all my code and
abandon most of the text utility programs like grep and sort unless
I can figure out what is going on.

Seems like if you are going to go to the effort of rewriting everything
you might first want to debug cygwin and find out where the time is
going...
--
Christopher Faylor  spammer? - [EMAIL PROTECTED]
Cygwin Co-Project Leader[EMAIL PROTECTED]
TimeSys, Inc.

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)

2004-06-22 Thread Larry Hall
At 11:42 PM 6/22/2004, you wrote
On Tue, Jun 22, 2004 at 11:14:17PM -0400, [EMAIL PROTECTED] wrote:
I am just asking again about this problem in the hopes that someone
might have anything to suggest.  It seems that fopen is 10 to 20 times
slower than open on my I/O operations due to large delays in executing
a system call set_flags.  I will have to rewrite all my code and
abandon most of the text utility programs like grep and sort unless
I can figure out what is going on.

Seems like if you are going to go to the effort of rewriting everything
you might first want to debug cygwin and find out where the time is
going...


Dag-namit!  CGF beat me to the punch. :-)  I would only add
that there are two set_flag routines.  One in path.cc, the 
other in fhandler.h/fhandler.cc.  They don't do allot.  Just 
setting flags really (who would have guessed? ;-) ) and no one 
has fiddled with these in the 1.5.10 time-frame.  It's hard to 
imagine that either of these routines are what's responsible
for all the time you see lost.  

CGF is right (who would have guessed! ;-) ).  Debugging the 
internals a little bit would be time well spent, especially 
given the alternative you describe.



--
Larry Hall  http://www.rfk.com
RFK Partners, Inc.  (508) 893-9779 - RFK Office
838 Washington Street   (508) 893-9889 - FAX
Holliston, MA 01746 


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/