summaryrefslogtreecommitdiff
path: root/include/my_sys.h
diff options
context:
space:
mode:
authorDaniel Black <daniel@linux.ibm.com>2020-04-03 06:54:08 +1100
committerGitHub <noreply@github.com>2020-04-02 23:54:08 +0400
commite8351934b68d6d3ee273292eaa2ece203bb2b846 (patch)
treeaee7b27179323f7d0b7a7718dfb136c3655eee1b /include/my_sys.h
parent3bb5c6b0c21707ed04f93fb30c654caabba69f06 (diff)
downloadmariadb-git-e8351934b68d6d3ee273292eaa2ece203bb2b846.tar.gz
Merge pull request #1221 from grooverdan/10.4-MDEV-18851-multiple-sized-large-page-support
MDEV-18851: multiple sized large page support (linux)
Diffstat (limited to 'include/my_sys.h')
-rw-r--r--include/my_sys.h40
1 files changed, 27 insertions, 13 deletions
diff --git a/include/my_sys.h b/include/my_sys.h
index e2c10e7e553..f650b484cf4 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -176,15 +176,34 @@ extern void *my_memdup(PSI_memory_key key, const void *from,size_t length,myf My
extern char *my_strdup(PSI_memory_key key, const char *from,myf MyFlags);
extern char *my_strndup(PSI_memory_key key, const char *from, size_t length, myf MyFlags);
-#ifdef HAVE_LINUX_LARGE_PAGES
-extern uint my_get_large_page_size(void);
-extern uchar * my_large_malloc(size_t size, myf my_flags);
-extern void my_large_free(uchar *ptr);
+#if defined(__linux__) || defined(HAVE_GETPAGESIZES)
+extern size_t my_next_large_page_size(size_t sz, int *start);
#else
-#define my_get_large_page_size() (0)
-#define my_large_malloc(A,B) my_malloc_lock((A),(B))
-#define my_large_free(A) my_free_lock((A))
-#endif /* HAVE_LINUX_LARGE_PAGES */
+#define my_next_large_page_size(A,B) (0)
+#endif
+
+#if defined(_WIN32) || (defined(HAVE_MMAP) && !defined(__linux__) \
+ && !defined(HAVE_MMAP_ALIGNED))
+extern void my_get_large_page_size(void);
+#else
+#define my_get_large_page_size() do {} while(0)
+#endif
+
+#ifdef HAVE_LARGE_PAGE_OPTION
+int my_init_large_pages(my_bool super_large_pages);
+uchar * my_large_malloc(size_t *size, myf my_flags);
+void my_large_free(void *ptr, size_t size);
+#else
+#define my_large_malloc(A,B) my_malloc_lock(*(A),(B))
+#define my_large_free(A,B) my_free_lock((A))
+#endif /* HAVE_LARGE_PAGE_OPTION */
+
+#ifdef _WIN32
+extern BOOL my_obtain_privilege(LPCSTR lpPrivilege);
+#else
+#define my_obtain_privilege(A) (1)
+#define SE_LOCK_MEMORY_NAME "SeLockMemoryPrivilege"
+#endif
void my_init_atomic_write(void);
#ifdef __linux__
@@ -242,11 +261,6 @@ extern int sf_leaking_memory; /* set to 1 to disable memleak detection */
extern void (*proc_info_hook)(void *, const PSI_stage_info *, PSI_stage_info *,
const char *, const char *, const unsigned int);
-#ifdef HAVE_LINUX_LARGE_PAGES
-extern my_bool my_use_large_pages;
-extern uint my_large_page_size;
-#endif
-
/* charsets */
#define MY_ALL_CHARSETS_SIZE 2048
extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *default_charset_info;