Commit eb807d58 authored by Geoff Simmons's avatar Geoff Simmons

Encapsulate munmap() calls in a single function.

parent 33f3bd64
......@@ -121,6 +121,24 @@ struct obj_entry {
VSLIST_HEAD(obj_head, obj_entry);
static int
unmap(struct VPFX(file_reader) *rdr, void *addr)
{
CHECK_OBJ_NOTNULL(rdr, FILE_READER_MAGIC);
CHECK_OBJ_NOTNULL(rdr->info, FILE_INFO_MAGIC);
AN(rdr->obj_name);
AN(rdr->vcl_name);
AN(addr);
errno = 0;
if (munmap(addr, rdr->info->len) != 0) {
VSL(SLT_Error, NO_VXID, "vmod file: %s.%s: unmap failed: %s",
rdr->vcl_name, rdr->obj_name, VAS_errtxt(errno));
return (-1);
}
return (0);
}
static void
check(union sigval val)
{
......@@ -272,13 +290,10 @@ check(union sigval val)
flags |= RDR_MAPPED;
if (rdr->flags & RDR_MAPPED) {
AN(prev);
errno = 0;
if (munmap(prev, rdr->info->len) != 0) {
if (unmap(rdr, prev) != 0) {
VERRMSG(rdr, errbuf, "%s.%s: unmap failed: %s",
rdr->vcl_name, rdr->obj_name,
VAS_errtxt(errno));
VSL(SLT_Error, NO_VXID, "%s", errbuf);
flags |= RDR_ERROR;
}
}
......@@ -544,18 +559,8 @@ vmod_reader__fini(struct VPFX(file_reader) **rdrp)
rdr->obj_name, VAS_errtxt(errno));
}
if (rdr->flags & RDR_MAPPED) {
CHECK_OBJ_NOTNULL(rdr->info, FILE_INFO_MAGIC);
AN(rdr->addr);
AN(rdr->obj_name);
AN(rdr->vcl_name);
errno = 0;
if (munmap(rdr->addr, rdr->info->len) != 0)
VSL(SLT_Error, NO_VXID, "vmod file %s.%s finalization: "
"unmap failed: %s", rdr->vcl_name, rdr->obj_name,
VAS_errtxt(errno));
}
if (rdr->flags & RDR_MAPPED)
(void)unmap(rdr, rdr->addr);
if (rdr->info != NULL) {
CHECK_OBJ(rdr->info, FILE_INFO_MAGIC);
......@@ -951,16 +956,8 @@ VPFX(event)(VRT_CTX, struct vmod_priv *priv, enum vcl_event_e e)
if ((rdr->flags & RDR_MAPPED) == 0)
continue;
CHECK_OBJ_NOTNULL(rdr->info, FILE_INFO_MAGIC);
AN(rdr->addr);
errno = 0;
if (munmap(rdr->addr, rdr->info->len) != 0) {
VSL(SLT_Error, NO_VXID,
"vmod file: %s.%s: unmap failed: %s",
rdr->vcl_name, rdr->obj_name,
VAS_errtxt(errno));
if (unmap(rdr, rdr->addr) != 0)
continue;
}
rdr->flags &= ~RDR_MAPPED;
rdr->addr = NULL;
VSL(SLT_Debug, NO_VXID, "vmod file: %s.%s: unmapped",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment