diff options
| author | Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com> | 2017-08-07 17:35:43 -0400 |
|---|---|---|
| committer | Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com> | 2017-08-07 17:35:43 -0400 |
| commit | cd6457d07d545664fe944a7f791770731a93df29 (patch) | |
| tree | af09aaeca401e791178c660aa50aefa2e8d27987 /Cryptlib/OpenSSL/crypto/async/arch/async_win.c | |
| parent | f51c03c05b4f08d91f4578b4d7f54e88f8d4ab0a (diff) | |
| parent | 25f7fd1fb389a5f6356f353d16c5ead80dac6bbc (diff) | |
| download | efi-boot-shim-cd6457d07d545664fe944a7f791770731a93df29.tar.gz efi-boot-shim-cd6457d07d545664fe944a7f791770731a93df29.zip | |
Merge tag 'upstream/12+1501864225.b586175' into cyphermox/mokmanager
Upstream version 12+1501864225.b586175
Diffstat (limited to 'Cryptlib/OpenSSL/crypto/async/arch/async_win.c')
| -rw-r--r-- | Cryptlib/OpenSSL/crypto/async/arch/async_win.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/Cryptlib/OpenSSL/crypto/async/arch/async_win.c b/Cryptlib/OpenSSL/crypto/async/arch/async_win.c new file mode 100644 index 00000000..077d56ce --- /dev/null +++ b/Cryptlib/OpenSSL/crypto/async/arch/async_win.c @@ -0,0 +1,55 @@ +/* + * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* This must be the first #include file */ +#include "../async_locl.h" + +#ifdef ASYNC_WIN + +# include <windows.h> +# include "internal/cryptlib.h" + +int ASYNC_is_capable(void) +{ + return 1; +} + +void async_local_cleanup(void) +{ + async_ctx *ctx = async_get_ctx(); + if (ctx != NULL) { + async_fibre *fibre = &ctx->dispatcher; + if (fibre != NULL && fibre->fibre != NULL && fibre->converted) { + ConvertFiberToThread(); + fibre->fibre = NULL; + } + } +} + +int async_fibre_init_dispatcher(async_fibre *fibre) +{ + fibre->fibre = ConvertThreadToFiber(NULL); + if (fibre->fibre == NULL) { + fibre->converted = 0; + fibre->fibre = GetCurrentFiber(); + if (fibre->fibre == NULL) + return 0; + } else { + fibre->converted = 1; + } + + return 1; +} + +VOID CALLBACK async_start_func_win(PVOID unused) +{ + async_start_func(); +} + +#endif |
