Update libco

This commit is contained in:
twinaphex 2017-09-06 00:47:38 +02:00
parent 33a77bd3a3
commit 56c66376ff
2 changed files with 38 additions and 14 deletions

View File

@ -26,7 +26,11 @@ cothread_t co_active(void)
{
if(!co_active_)
{
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
ConvertThreadToFiberEx(0, FIBER_FLAG_FLOAT_SWITCH);
#else
ConvertThreadToFiber(0);
#endif
co_active_ = GetCurrentFiber();
}
return co_active_;
@ -36,10 +40,19 @@ cothread_t co_create(unsigned int heapsize, void (*coentry)(void))
{
if(!co_active_)
{
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
ConvertThreadToFiberEx(0, FIBER_FLAG_FLOAT_SWITCH);
#else
ConvertThreadToFiber(0);
#endif
co_active_ = GetCurrentFiber();
}
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
return (cothread_t)CreateFiberEx(heapsize, heapsize, FIBER_FLAG_FLOAT_SWITCH, co_thunk, (void*)coentry);
#else
return (cothread_t)CreateFiber(heapsize, co_thunk, (void*)coentry);
#endif
}
void co_delete(cothread_t cothread)

View File

@ -4,20 +4,31 @@
license: public domain
*/
#if defined(__GNUC__) && defined(__i386__) || (defined(_MSC_VER) && defined(_M_IX86))
#include "x86.c"
#elif defined(__GNUC__) && defined(__amd64__) || (defined(_MSC_VER) && defined(_M_AMD64))
#include "amd64.c"
#elif defined(__GNUC__) && defined(_ARCH_PPC)
#include "ppc.c"
#elif defined(__GNUC__) && defined(VITA)
#include "scefiber.c"
#elif defined(__GNUC__) && (defined(__ARM_EABI__) || defined(__arm__))
#include "armeabi.c"
#elif defined(__GNUC__)
#include "sjlj.c"
#elif defined(_MSC_VER)
#include "fiber.c"
#if defined _MSC_VER
#include <Windows.h>
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#include "fiber.c"
#elif defined _M_IX86
#include "x86.c"
#elif defined _M_AMD64
#include "amd64.c"
#else
#include "fiber.c"
#endif
#elif defined __GNUC__
#if defined __i386__
#include "x86.c"
#elif defined __amd64__
#include "amd64.c"
#elif defined _ARCH_PPC
#include "ppc.c"
#elif defined VITA
#include "scefiber.c"
#elif defined(__ARM_EABI__) || defined(__arm__)
#include "armeabi.c"
#else
#include "sjlj.c"
#endif
#else
#error "libco: unsupported processor, compiler or operating system"
#endif