1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

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
This commit is contained in:
unknown
2003-01-06 22:07:25 +02:00
parent ef62b4c948
commit 9497c99704
26 changed files with 1252 additions and 186 deletions

View File

@ -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