diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2022-08-04 17:58:50 +0300 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2022-08-05 13:02:11 +0300 |
commit | 007e23d6390af11582e55453269b7a51c723d2dd (patch) | |
tree | 8e8cff3ca23f5e56d9766a5ee6c6abb366611b07 /winsup/cygwin/local_includes/tls_pbuf.h | |
parent | 1e428bee1c5ef7c76ba4e46e6693b913edc9bbf3 (diff) |
Cygwin: Reorganize cygwin source dir
Create subdirs and move files accordingly:
- DevDocs: doc files
- fhandler: fhandler sources, split fhandler.cc into base.cc and null.cc
- local_includes: local include files
- scripts: scripts called during build
- sec: security sources
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup/cygwin/local_includes/tls_pbuf.h')
-rw-r--r-- | winsup/cygwin/local_includes/tls_pbuf.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/winsup/cygwin/local_includes/tls_pbuf.h b/winsup/cygwin/local_includes/tls_pbuf.h new file mode 100644 index 000000000..f2cc3001c --- /dev/null +++ b/winsup/cygwin/local_includes/tls_pbuf.h @@ -0,0 +1,39 @@ +/* tls_pbuf.h + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. */ + +#pragma once + +class tmp_pathbuf +{ + uint32_t c_buf_old; + uint32_t w_buf_old; +public: + tmp_pathbuf () __attribute__ ((always_inline)) + : c_buf_old (_my_tls.locals.pathbufs.c_cnt), + w_buf_old (_my_tls.locals.pathbufs.w_cnt) + {} + ~tmp_pathbuf () __attribute__ ((always_inline)) + { + _my_tls.locals.pathbufs.c_cnt = c_buf_old; + _my_tls.locals.pathbufs.w_cnt = w_buf_old; + } + + inline bool check_usage (uint32_t c_need, uint32_t w_need) + { + return c_need + c_buf_old < TP_NUM_C_BUFS + && w_need + w_buf_old < TP_NUM_W_BUFS; + } + char *c_get (); /* Create temporary TLS path buf of size NT_MAX_PATH. */ + PWCHAR w_get (); /* Create temporary TLS path buf of size 2 * NT_MAX_PATH. */ + inline char *t_get () { return (char *) w_get (); } + inline PUNICODE_STRING u_get (PUNICODE_STRING up) + { + up->Length = 0; + up->MaximumLength = (NT_MAX_PATH - 1) * sizeof (WCHAR); + up->Buffer = w_get (); + return up; + } +}; |