⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6-3.c

📁 《Linux应用开发技术详解》附书光盘中的例程。
💻 C
字号:
#include <unistd.h>     /* Support all standards    */
#include <sys/mman.h>   /* Memory locking functions */

#define DATA_SIZE 2048

lock_memory(char   *addr, size_t  size)
{
  unsigned long    page_offset, page_size;
page_size = sysconf(_SC_PAGE_SIZE);
  page_offset = (unsigned long) addr % page_size;
addr -= page_offset;  /* Adjust addr to page boundary */
  size += page_offset;  /* Adjust size with page_offset */
return ( mlock(addr, size) );  /* Lock the memory */
}

unlock_memory(char   *addr, size_t  size)
{
  unsigned long    page_offset, page_size;
page_size = sysconf(_SC_PAGE_SIZE);
  page_offset = (unsigned long) addr % page_size;
addr -= page_offset;  /* Adjust addr to page boundary */
  size += page_offset;  /* Adjust size with page_offset */
return ( munlock(addr, size) );  /* Unlock the memory */
}
void main()
{
  char data[DATA_SIZE];
if ( lock_memory(data, DATA_SIZE) ==- 1 )
    perror("lock_memory");

 /* Do work here */
if ( unlock_memory(data, DATA_SIZE) ==- 1 )
    perror("unlock_memory");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -