30 |
|
#include <stdarg.h> |
31 |
|
#include <string.h> |
32 |
|
#include <ctype.h> |
33 |
– |
#include <unistd.h> |
33 |
|
#include <sys/types.h> |
34 |
|
#ifndef EZXML_NOMMAP |
35 |
+ |
#include <unistd.h> |
36 |
|
#include <sys/mman.h> |
37 |
|
#endif // EZXML_NOMMAP |
38 |
|
#include <sys/stat.h> |
638 |
|
|
639 |
|
#ifndef EZXML_NOMMAP |
640 |
|
l = (st.st_size + sysconf(_SC_PAGESIZE) - 1) & ~(sysconf(_SC_PAGESIZE) -1); |
641 |
< |
if ((m = mmap(NULL, l, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0)) != |
642 |
< |
MAP_FAILED) { |
641 |
> |
if ((m = mmap(NULL, l, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0)) |
642 |
> |
!= MAP_FAILED) { |
643 |
|
madvise(m, l, MADV_SEQUENTIAL); // optimize for sequential access |
644 |
|
root = (ezxml_root_t)ezxml_parse_str(m, st.st_size); |
645 |
|
madvise(m, root->len = l, MADV_NORMAL); // put it back to normal |