diff options
author | unknown <heikki@hundin.mysql.fi> | 2003-01-06 22:07:25 +0200 |
---|---|---|
committer | unknown <heikki@hundin.mysql.fi> | 2003-01-06 22:07:25 +0200 |
commit | 9497c997041e20baab3ebaa985c9e29235fdf0ca (patch) | |
tree | 88f03b8d4b471aa94f27b4a3ed510bcd7c2c3ccb /innobase/include/os0proc.h | |
parent | ef62b4c948d68108c0945ebde33540b03b392a6d (diff) | |
download | mariadb-git-9497c997041e20baab3ebaa985c9e29235fdf0ca.tar.gz |
buf0buf.c, buf0buf.ic, buf0buf.h:
Reduce memory usage of the buffer headers
Many files:
Merge InnoDB-4.1 with AWE support
sql/mysqld.cc:
Merge InnoDB-4.1 with AWE support
sql/set_var.cc:
Merge InnoDB-4.1 with AWE support
sql/ha_innodb.h:
Merge InnoDB-4.1 with AWE support
sql/ha_innodb.cc:
Merge InnoDB-4.1 with AWE support
innobase/btr/btr0cur.c:
Merge InnoDB-4.1 with AWE support
innobase/btr/btr0pcur.c:
Merge InnoDB-4.1 with AWE support
innobase/buf/buf0flu.c:
Merge InnoDB-4.1 with AWE support
innobase/buf/buf0lru.c:
Merge InnoDB-4.1 with AWE support
innobase/buf/buf0rea.c:
Merge InnoDB-4.1 with AWE support
innobase/include/btr0pcur.h:
Merge InnoDB-4.1 with AWE support
innobase/include/buf0lru.h:
Merge InnoDB-4.1 with AWE support
innobase/include/log0recv.h:
Merge InnoDB-4.1 with AWE support
innobase/include/os0proc.h:
Merge InnoDB-4.1 with AWE support
innobase/include/srv0srv.h:
Merge InnoDB-4.1 with AWE support
innobase/log/log0log.c:
Merge InnoDB-4.1 with AWE support
innobase/log/log0recv.c:
Merge InnoDB-4.1 with AWE support
innobase/os/os0file.c:
Merge InnoDB-4.1 with AWE support
innobase/os/os0proc.c:
Merge InnoDB-4.1 with AWE support
innobase/srv/srv0srv.c:
Merge InnoDB-4.1 with AWE support
innobase/srv/srv0start.c:
Merge InnoDB-4.1 with AWE support
innobase/trx/trx0sys.c:
Merge InnoDB-4.1 with AWE support
innobase/trx/trx0trx.c:
Merge InnoDB-4.1 with AWE support
innobase/ut/ut0ut.c:
Merge InnoDB-4.1 with AWE support
innobase/include/buf0buf.h:
Reduce memory usage of the buffer headers
innobase/include/buf0buf.ic:
Reduce memory usage of the buffer headers
innobase/buf/buf0buf.c:
Reduce memory usage of the buffer headers
Diffstat (limited to 'innobase/include/os0proc.h')
-rw-r--r-- | innobase/include/os0proc.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/innobase/include/os0proc.h b/innobase/include/os0proc.h index 79750e5c1f7..08510db4366 100644 --- a/innobase/include/os0proc.h +++ b/innobase/include/os0proc.h @@ -15,6 +15,76 @@ Created 9/30/1995 Heikki Tuuri typedef void* os_process_t; typedef unsigned long int os_process_id_t; +/* The cell type in os_awe_allocate_mem page info */ +#ifdef __NT__ +typedef ULONG_PTR os_awe_t; +#else +typedef ulint os_awe_t; +#endif + +/* Physical page size when Windows AWE is used. This is the normal +page size of an Intel x86 processor. We cannot use AWE with 2 MB or 4 MB +pages. */ +#define OS_AWE_X86_PAGE_SIZE 4096 + +/******************************************************************** +Windows AWE support. Tries to enable the "lock pages in memory" privilege for +the current process so that the current process can allocate memory-locked +virtual address space to act as the window where AWE maps physical memory. */ + +ibool +os_awe_enable_lock_pages_in_mem(void); +/*=================================*/ + /* out: TRUE if success, FALSE if error; + prints error info to stderr if no success */ +/******************************************************************** +Allocates physical RAM memory up to 64 GB in an Intel 32-bit x86 +processor. */ + +ibool +os_awe_allocate_physical_mem( +/*=========================*/ + /* out: TRUE if success */ + os_awe_t** page_info, /* out, own: array of opaque data containing + the info for allocated physical memory pages; + each allocated 4 kB physical memory page has + one slot of type os_awe_t in the array */ + ulint n_megabytes); /* in: number of megabytes to allocate */ +/******************************************************************** +Allocates a window in the virtual address space where we can map then +pages of physical memory. */ + +byte* +os_awe_allocate_virtual_mem_window( +/*===============================*/ + /* out, own: allocated memory, or NULL if did not + succeed */ + ulint size); /* in: virtual memory allocation size in bytes, must + be < 2 GB */ +/******************************************************************** +With this function you can map parts of physical memory allocated with +the ..._allocate_physical_mem to the virtual address space allocated with +the previous function. Intel implements this so that the process page +tables are updated accordingly. A test on a 1.5 GHz AMD processor and XP +showed that this takes < 1 microsecond, much better than the estimated 80 us +for copying a 16 kB page memory to memory. But, the operation will at least +partially invalidate the translation lookaside buffer (TLB) of all +processors. Under a real-world load the performance hit may be bigger. */ + +ibool +os_awe_map_physical_mem_to_window( +/*==============================*/ + /* out: TRUE if success; the function + calls exit(1) in case of an error */ + byte* ptr, /* in: a page-aligned pointer to + somewhere in the virtual address + space window; we map the physical mem + pages here */ + ulint n_mem_pages, /* in: number of 4 kB mem pages to + map */ + os_awe_t* page_info); /* in: array of page infos for those + pages; each page has one slot in the + array */ /******************************************************************** Converts the current process id to a number. It is not guaranteed that the number is unique. In Linux returns the 'process number' of the current |