Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Tue, 3 Sep 2002 13:51:35 +0200 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: A Simple Real World Benchmark for cygwin Message-ID: <20020903135135.Z12899@cygbert.vinschen.de> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com References: <20020902155542 DOT GC14051 AT redhat DOT com> <20020902220234 DOT GA22844 AT redhat DOT com> <20020903102756 DOT V12899 AT cygbert DOT vinschen DOT de> <1031045914 DOT 3d74831ad243d AT mail DOT broadpark DOT no> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1031045914.3d74831ad243d@mail.broadpark.no> User-Agent: Mutt/1.3.22.1i On Tue, Sep 03, 2002 at 11:38:34AM +0200, dvasaru AT broadpark DOT no wrote: > Quoting Corinna Vinschen : > > > Uhm... it should have nothing to do with NTFS vs. other FS. The shortcut > > symlinks are used on all FS. > > That's what I thought to begin with, but cygwin cunningly uses Extended Attributes where available, bypassing the check_shortcut and the whole COM world altogether on NTFS. Yeah, that's right, of course. > > The question is if we can drop CoUninitialize() completely. If the call > > to CoUninitialize() is dropped, it should not matter to call CoInitialize() > > multiple times since it should only return a "The COM library is already > > initialized on this thread" return code. That shouldn't take that much > > time. The slowness results from the need to load DLLs and such stuff. > > To quote from the MSDN: > "To close the COM library gracefully, each successful call to CoInitialize or CoInitializeEx, including those that return S_FALSE, must be balanced by a corresponding call to CoUninitialize" > > Another relevant quote: > "Because there is no way to control the order in which in-process servers are loaded or unloaded, it is not safe to call CoInitialize, CoInitializeEx, or CoUninitialize from the DllMain function" Yep, that's the problem. And the reasoning for calling CoInit/CoUnint always as pair here since there's no way to rely on that the application will *not* call CoUnit somewhere in the middle of its processing. > On the other hand, if the shortcut file format is known(?), one could maybe bypass the COM/ IShellXXXX interfaces completely and read the link directly from the file. That's ok. The format is partly known, at least it should be enough to read the info from Cygwin created shortcuts. The creation itself already uses plain WriteFile() calls. However, the code in shortcut.c was meant to read all shortcuts (see the #if TREAT_NATIVE_SHORTCUTS_AS_SYMLINKS part of the code. Since we are confident that treating natively created shortcuts as symlinks is a fault, we could drop that requirement and just use ReadFile() for that. This would obviously speed up Cygwin when reading shortcuts. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Developer mailto:cygwin AT cygwin DOT com Red Hat, Inc. -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/