Como sabes si no hubo un process switch en Smalltalk a otro proceso con mas
prioridad que el tuyo, y que ese proceso no llamo tambien a GetLastError()?
Como sabes si la maquina virtual no llamo a GetLastError() por la suya para
procesar eventos de red despues de llamar a SomeFunction() pero antes de
volver a Smalltalk, por ejemplo?  El problema basico es que hacer

| returnValue errorCode |
returnValue := self callSomeFunction.
returnValue = 0 ifFalse: [^value].
errorCode := self callGetLastError.
self functionFailedWith: errorCode

no es atomico con respecto a process switches o a actividades de la maquina
virtual.  Por lo tanto, en general es incorrecto (o por lo menos peligroso)
llamar a GetLastError() directamente desde un FFI.

Andres.


2010/8/26 GallegO <[email protected]>

> Andres:
>
> En la documentacion de GetLastError dice que es devuelve el ultimo error en
> el thread que llama a la funcion. Qué posibilidades ves que en un Smalltalk
> como Dolphin cambie el thread si la llamada a GetLastError se produce un
> statement mas abajo?
>
> Saludos
>   GallegO
>
> El 25 de agosto de 2010 18:28, Andres Valloud 
> <[email protected]>escribió:
>
> En general no se puede* llamar explicitamente a GetLastError() desde un FFI
>> porque puede suceder cualquier cosa entre las dos llamadas a funcion... si
>> tenes a mano la ultima version de VisualWorks, fijate el ultimo apendice de
>> la guia de DLLCC.  Hay un monton de otras cosas que tampoco se pueden*
>> hacer.
>>
>> Andres.
>>
>> * por supuesto que se "puede", pero el problema es que no "funciona" :)...
>>
>> 2010/8/25 Juan <[email protected]>
>>
>> Kiko
>>> Sera que se hizo otra llamada a otro mensaje que usa el SO? entonces te
>>> cambia el valor del
>>> getLastError?
>>> se me ocurren 2 cosas.
>>> 1)  que lo setees si mal no recurdo setLastError:
>>> 2) que lo hagas dentro de un critical para q no te interrumpan
>>>     el el scheduler.
>>>
>>> saludos
>>> MDC
>>>
>>>
>>>
>>>
>>> 2010/8/25 Jose Gregoris <[email protected]>
>>>
>>>  Hola
>>>>
>>>> En un ejemplo de OpenGL que estoy haciendo , tengo un error medio raro y
>>>> no entiendo bien porque occurre.
>>>> Para mejor entendimiento deberán mirar la captura que adjunto.
>>>> El tema esta en este método:
>>>>
>>>> OpenGLLibrary>>createContext: aDCHandle
>>>>     "The wglCreateContext function creates a new OpenGL rendering
>>>> context,
>>>>          which is suitable for drawing on the device   referenced    by
>>>> hdc.
>>>>          The rendering context has the same pixel format as the device
>>>> context.."
>>>>
>>>>     | context error |
>>>>     context := self wglCreateContext: aDCHandle.
>>>>     error := KernelLibrary default getLastError.
>>>>     context ifNil: [^self error: 'Can''t Create A GL Rendering Context.
>>>> Error: ' , error printString].
>>>>     ^context
>>>>
>>>>
>>>> Luego de llamar a #wglCreateContext: este retorna  un contexto no
>>>> valido "nil" y luego chequeo si hay algun error para poder informar.
>>>> Pasa que ese chequeo retorna "0" como si no pasara nada, pero en
>>>> realidad algo paso por lo que fallo  #wglCreateContext:
>>>>
>>>> Como se ve en la captura desde el debug intento de nuevo llamar a
>>>> getLastError y hay si me retorna un error !!
>>>>
>>>> No tengo idea de porque pasa esto y me gustaría saber :)
>>>>
>>>> Es un error que parese ser de la librería Kernel, pero no sé.
>>>> Alguna idea ?
>>>>
>>>> saludos kiko
>>>>
>>>>
>>>>
>>>> --
>>>> 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]<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]<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]<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

Responder a