Слияние кода завершено, страница обновится автоматически
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/mman.h>
#include "shm.h"
#ifdef MAP_ANON
int
shm_alloc(struct shm *shm)
{
shm->addr = (void *) mmap(NULL, shm->size,
PROT_READ|PROT_WRITE,
MAP_ANON|MAP_SHARED, -1, 0);
if (shm->addr == NULL) {
return -1;
}
return 0;
}
void
shm_free(struct shm *shm)
{
if (shm->addr) {
munmap((void *) shm->addr, shm->size);
}
}
#else
int
shm_alloc(struct shm *shm)
{
ngx_fd_t fd;
fd = open("/dev/zero", O_RDWR);
if (fd == -1) {
return -1;
}
shm->addr = (void *) mmap(NULL, shm->size,
PROT_READ|PROT_WRITE,
MAP_SHARED, fd, 0);
close(fd);
if (shm->addr == NULL) {
return -1;
}
return 0;
}
void
shm_free(struct shm *shm)
{
if (shm->addr) {
munmap((void *) shm->addr, shm->size);
}
}
#endif
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )