Changeset View
Changeset View
Standalone View
Standalone View
sys/vm/uma_core.c
Context not available. | |||||
printf("[zone: %s] %s\n", zone->uz_name, zone->uz_warning); | printf("[zone: %s] %s\n", zone->uz_name, zone->uz_warning); | ||||
} | } | ||||
static inline void | |||||
zone_maxaction(uma_zone_t zone) | |||||
{ | |||||
if (zone->uz_maxaction) | |||||
(*zone->uz_maxaction)(zone); | |||||
} | |||||
static void | static void | ||||
zone_foreach_keg(uma_zone_t zone, void (*kegfn)(uma_keg_t)) | zone_foreach_keg(uma_zone_t zone, void (*kegfn)(uma_keg_t)) | ||||
{ | { | ||||
Context not available. | |||||
zone->uz_flags = 0; | zone->uz_flags = 0; | ||||
zone->uz_warning = NULL; | zone->uz_warning = NULL; | ||||
timevalclear(&zone->uz_ratecheck); | timevalclear(&zone->uz_ratecheck); | ||||
zone->uz_maxaction = NULL; | |||||
keg = arg->keg; | keg = arg->keg; | ||||
ZONE_LOCK_INIT(zone, (arg->flags & UMA_ZONE_MTXCLASS)); | ZONE_LOCK_INIT(zone, (arg->flags & UMA_ZONE_MTXCLASS)); | ||||
Context not available. | |||||
if ((zone->uz_flags & UMA_ZFLAG_MULTI) == 0) { | if ((zone->uz_flags & UMA_ZFLAG_MULTI) == 0) { | ||||
zone->uz_flags |= UMA_ZFLAG_FULL; | zone->uz_flags |= UMA_ZFLAG_FULL; | ||||
zone_log_warning(zone); | zone_log_warning(zone); | ||||
zone_maxaction(zone); | |||||
} | } | ||||
if (flags & M_NOWAIT) | if (flags & M_NOWAIT) | ||||
break; | break; | ||||
Context not available. | |||||
zone->uz_flags |= UMA_ZFLAG_FULL; | zone->uz_flags |= UMA_ZFLAG_FULL; | ||||
zone->uz_sleeps++; | zone->uz_sleeps++; | ||||
zone_log_warning(zone); | zone_log_warning(zone); | ||||
zone_maxaction(zone); | |||||
msleep(zone, zone->uz_lockptr, PVM, | msleep(zone, zone->uz_lockptr, PVM, | ||||
"zonelimit", hz/100); | "zonelimit", hz/100); | ||||
zone->uz_flags &= ~UMA_ZFLAG_FULL; | zone->uz_flags &= ~UMA_ZFLAG_FULL; | ||||
Context not available. | |||||
} | } | ||||
/* See uma.h */ | /* See uma.h */ | ||||
void | |||||
uma_zone_set_maxaction(uma_zone_t zone, uma_maxaction_t maxaction) | |||||
{ | |||||
ZONE_LOCK(zone); | |||||
zone->uz_maxaction = maxaction; | |||||
ZONE_UNLOCK(zone); | |||||
} | |||||
/* See uma.h */ | |||||
int | int | ||||
uma_zone_get_cur(uma_zone_t zone) | uma_zone_get_cur(uma_zone_t zone) | ||||
{ | { | ||||
Context not available. |