On Nov 18 10:10, Jeremy Drake via Cygwin-patches wrote:
> On Mon, 18 Nov 2024, Corinna Vinschen wrote:
> 
> > Neat, but if this only affects the ARM64 emulation, shouldn't this only
> > be called under wincap.cpu_arch() == PROCESSOR_ARCHITECTURE_AMD64?
> 
> Wouldn't this always be true though?

Copy/Paste and not thinking straight is doing that for me, sorry.

The above was supposed to be PROCESSOR_ARCHITECTURE_ARM64, but this is
obviously dumb either way.  What I *meant* was checking if we're running
in an emulation vias GetNativeSystemInfo or IsWow64Process2.  We're
using the latter in find_fast_cwd() already.

> (Except that I backported this to
> 3.3.6 for i686 support, where I'd have to check for that possibility as
> well).

Have I missed something?  I thought this only occurs in an
AMD64-on-ARM64 environment. What is it used for on i686?

> Is this just to avoid the code when a native ARM64 Cygwin appears?

No, the idea was running the code only if we know we're being emulated
on ARM64.  I just screwed up :}

> I have been sort of considering if the results from IsWow64Process2 should
> be cached in wincap, then we could check that here if we are running on
> ARM64 under emulation, and also used the cached value in the check around
> FAST_CWD.  In addition, I was thining it might make sense to include this
> info in `uname -s` like -WOW64 used to be when i686 was supported.

That might be a good idea in the long run and patches are welcome.
Right now we have this isolated usage of IsWow64Process2 in find_fast_cwd().
Given this function is called at least once in a process tree anyway,
wincap would be a natural place to keep the info.

And yeah, maybe we can just attach "-ARM64" to the -s info or something.

> 
> > A one-line comment explain why ERROR_OPERATION_ABORTED is exempt from
> > the debug message might be helpful here.
> 
> OK (if I can limit myself to one line ;))
> 
> > > -     chld_procs[i].wait_thread->terminate_thread ();
> > > +     if (!CancelSynchronousIo (chld_procs[i].wait_thread->thread_handle 
> > > ()))
> >
> > This expression should be bracketed.  But actually, can you just change
> > this to
> >
> >    if (chld_procs[i].wait_thread
> >        && CancelSynchronousIo())
> > please?  And another comment might be helpful here, too.
> 
> OK

Thanks,
Corinna

Reply via email to