mirror of
https://github.com/cesanta/mongoose.git
synced 2024-12-31 01:13:01 +08:00
Added mg_mmap and mg_munmap utility functions for memory mapping files
This commit is contained in:
parent
72f45aa7e2
commit
7806609773
25
mongoose.c
25
mongoose.c
@ -5141,3 +5141,28 @@ struct mg_server *mg_create_server(void *server_data, mg_handler_t handler) {
|
|||||||
server->event_handler = handler;
|
server->event_handler = handler;
|
||||||
return server;
|
return server;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
static void *mmap(void *addr, int64_t len, int prot, int flags, int fd,
|
||||||
|
int offset) {
|
||||||
|
HANDLE fh = (HANDLE) _get_osfhandle(fd);
|
||||||
|
HANDLE mh = CreateFileMapping(fh, 0, PAGE_READONLY, 0, 0, 0);
|
||||||
|
void *p = MapViewOfFile(mh, FILE_MAP_READ, 0, 0, (size_t) len);
|
||||||
|
CloseHandle(mh);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
#define munmap(x, y) UnmapViewOfFile(x)
|
||||||
|
#define MAP_FAILED NULL
|
||||||
|
#define MAP_PRIVATE 0
|
||||||
|
#define PROT_READ 0
|
||||||
|
#else
|
||||||
|
#include <sys/mman.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void *mg_mmap(FILE *fp, size_t size) {
|
||||||
|
return mmap(NULL, size, PROT_READ, MAP_PRIVATE, fileno(fp), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void mg_munmap(void *p, size_t size) {
|
||||||
|
munmap(p, size);
|
||||||
|
}
|
||||||
|
@ -135,6 +135,8 @@ int mg_url_encode(const char *src, size_t s_len, char *dst, size_t dst_len);
|
|||||||
int mg_url_decode(const char *src, int src_len, char *dst, int dst_len, int);
|
int mg_url_decode(const char *src, int src_len, char *dst, int dst_len, int);
|
||||||
int mg_terminate_ssl(struct mg_connection *c, const char *cert);
|
int mg_terminate_ssl(struct mg_connection *c, const char *cert);
|
||||||
int mg_forward(struct mg_connection *, const char *host, int port, int use_ssl);
|
int mg_forward(struct mg_connection *, const char *host, int port, int use_ssl);
|
||||||
|
void *mg_mmap(FILE *fp, size_t size);
|
||||||
|
void mg_munmap(void *p, size_t size);
|
||||||
|
|
||||||
|
|
||||||
// Templates support
|
// Templates support
|
||||||
|
Loading…
x
Reference in New Issue
Block a user