No vi eso que decis, pero en general estaria bueno usar _wincall :)... 2010/8/30 Jose Gregoris <[email protected]>
> Hola Andres, gente > > Gracias por sus respuestas. > Es notorio que lo que comentas no es muy conocido pues estaba viendo un > ejemplo de openGL en VW y usan el #GetLasError como lo hacia yo. > En dolphin esta usado en varios lugares. > > saludos kiko > > --- El *vie 27-ago-10, Andres Valloud <[email protected]>*escribió: > > > De: Andres Valloud <[email protected]> > Asunto: Re: [clubSmalltalk] Dolphin X6 getLastError > Para: [email protected] > Fecha: viernes, 27 de agosto de 2010, 21:56 > > Por eso en DLLCC hay un pragma para llamar a una funcion de Windows > devolviendo el GetLastError() si la funcion falla... el pragma es > _wincall. Para *nix, tambien hay _syscall para poder obtener el valor > de errno asociado a la funcion que acabas de llamar via el FFI. > > Lamentablemente, en VisualWorks hay un metodo para llamar a > GetLastError() directamente en la clase Win32SystemSupport. Eso es un > error y me gustaria que para la version nueva eso no este mas :)... > > 2010/8/27 Gerardo Richarte > <[email protected]<http://mc/[email protected]> > >: > > On 08/26/2010 06:06 PM, Andres Valloud wrote: > >> En el caso general, como harias para detectar que otro proceso > >> interrumpio al proceso que esta por llamar a GetLastError(), > > si, no se puede me parece en el caso general. Por otro lado, no > > es solo si llamaron a GetLastError(). Si llamaron a cualquier otra > > función de Windows, que resetea el GetLastError() también. > > > > El GetLastError() es único por cada thread de Windows, si dos > > procesos nativos se interrumpen mutuamente, igual el GetLastError() > > de cada uno está a salvo. El tema es que en Smalltalk pasan dos cosas: > > > > . green threads, donde un solo thread nativo aloja más de un hilo de > > ejecución, y entonces se puede corromper el last error. > > . La VM también hace cosas entre bytecode y bytecode, método y > > método, etc. Si entre que llamas a la API y llamas a GetLastError(), > > por ejemplo, caé un GC, y el GC le devuelve memoria al OS > (VirtualProtect(), > > mmap(), etc). eso va a cambiar el GetLastError(). > > > > como dijo Andres de entrada, no es seguro llamar a GetLastError() > > via FFI o algún otro tipo de API call. Y la VM tendría que proveer un > > mecanismo seguro de hacerlo (básicamente, llamar a GetLastError() > > después de cada API call, y guardarlo para uso futuro) > > > > saludos, > > gera > > > > -- > > To post to this group, send email to > > [email protected]<http://mc/[email protected]> > > To unsubscribe from this group, send email to clubSmalltalk+ > [email protected]<http://mc/[email protected]> > > > > http://www.clubSmalltalk.org > > -- > To post to this group, send email to > [email protected]<http://mc/[email protected]> > To unsubscribe from this group, send email to clubSmalltalk+ > [email protected]<http://mc/[email protected]> > > http://www.clubSmalltalk.org > > > > > -- > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected]<clubsmalltalk%[email protected]> > > http://www.clubSmalltalk.org > -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] http://www.clubSmalltalk.org
