#include <config.h>
#include <stdio.h>
#include <isc/platform.h>
#include <isc/resource.h>
#include <isc/result.h>
#include <isc/util.h>
#include "errno2result.h"
#define WIN32_MAX_OPEN_FILES 2048
isc_result_t
isc_resource_setlimit(isc_resource_t resource, isc_resourcevalue_t value) {
isc_resourcevalue_t rlim_value;
int wresult;
if (resource != isc_resource_openfiles)
return (ISC_R_NOTIMPLEMENTED);
if (value == ISC_RESOURCE_UNLIMITED)
rlim_value = WIN32_MAX_OPEN_FILES;
else
rlim_value = min(value, WIN32_MAX_OPEN_FILES);
wresult = _setmaxstdio((int) rlim_value);
if (wresult > 0)
return (ISC_R_SUCCESS);
else
return (isc__errno2result(errno));
}
isc_result_t
isc_resource_getlimit(isc_resource_t resource, isc_resourcevalue_t *value) {
if (resource != isc_resource_openfiles)
return (ISC_R_NOTIMPLEMENTED);
*value = WIN32_MAX_OPEN_FILES;
return (ISC_R_SUCCESS);
}
isc_result_t
isc_resource_curlimit(isc_resource_t resource, isc_resourcevalue_t *value) {
if (resource != isc_resource_openfiles)
return (ISC_R_NOTIMPLEMENTED);
*value = WIN32_MAX_OPEN_FILES;
return (ISC_R_SUCCESS);
}