예제 #1
0
static int
pie_sysctl_target_tupdate_maxb_handler(SYSCTL_HANDLER_ARGS)
{
	int error;
	long  value;

	if (!strcmp(oidp->oid_name,"target"))
		value = pie_sysctl.qdelay_ref;
	else if (!strcmp(oidp->oid_name,"tupdate"))
		value = pie_sysctl.tupdate;
	else
		value = pie_sysctl.max_burst;
	
	value = value / AQM_TIME_1US;
	error = sysctl_handle_long(oidp, &value, 0, req);
	if (error != 0 || req->newptr == NULL)
		return (error);
	if (value < 1 || value > 10 * AQM_TIME_1S)
		return (EINVAL);
	value = value * AQM_TIME_1US;
	
	if (!strcmp(oidp->oid_name,"target"))
		pie_sysctl.qdelay_ref  = value;
	else if (!strcmp(oidp->oid_name,"tupdate"))
		pie_sysctl.tupdate  = value;
	else
		pie_sysctl.max_burst = value;
	return (0);
}
예제 #2
0
static int
sysctl_hw_realmem(SYSCTL_HANDLER_ARGS)
{
	u_long val;
	val = ctob(realmem);
	return (sysctl_handle_long(oidp, &val, 0, req));
}
예제 #3
0
static int
sysctl_limits(SYSCTL_HANDLER_ARGS)
{
	int error;
	long value;

	if (arg2 != 0)
		value = dn_cfg.slot_limit;
	else
		value = dn_cfg.byte_limit;
	error = sysctl_handle_long(oidp, &value, 0, req);

	if (error != 0 || req->newptr == NULL)
		return (error);
	if (arg2 != 0) {
		if (value < 1)
			return (EINVAL);
		dn_cfg.slot_limit = value;
	} else {
		if (value < 1500)
			return (EINVAL);
		dn_cfg.byte_limit = value;
	}
	return (0);
}
예제 #4
0
static int
sysctl_hw_usermem(SYSCTL_HANDLER_ARGS)
{
	u_long val;

	val = ctob(physmem - vm_cnt.v_wire_count);
	return (sysctl_handle_long(oidp, &val, 0, req));
}
예제 #5
0
static int
sysctl_kmem_map_free(SYSCTL_HANDLER_ARGS)
{
	u_long size;

	size = vmem_size(kmem_arena, VMEM_FREE);
	return (sysctl_handle_long(oidp, &size, 0, req));
}
예제 #6
0
static int
sysctl_kmem_map_size(SYSCTL_HANDLER_ARGS)
{
	u_long size;

	size = kmem_map->size;
	return (sysctl_handle_long(oidp, &size, 0, req));
}
예제 #7
0
static int
sysctl_hw_physmem(SYSCTL_HANDLER_ARGS)
{
    u_long pmem = ctob(physmem);

    int error = sysctl_handle_long(oidp, &pmem, 0, req);
    return (error);
}
예제 #8
0
static int
sysctl_kmem_map_free(SYSCTL_HANDLER_ARGS)
{
	u_long size;

	vm_map_lock_read(kmem_map);
	size = kmem_map->root != NULL ? kmem_map->root->max_free :
	    kmem_map->max_offset - kmem_map->min_offset;
	vm_map_unlock_read(kmem_map);
	return (sysctl_handle_long(oidp, &size, 0, req));
}
예제 #9
0
static int
sysctl_handle_sb_max(SYSCTL_HANDLER_ARGS)
{
	int error = 0;
	u_long tmp_sb_max = sb_max;

	error = sysctl_handle_long(oidp, &tmp_sb_max, arg2, req);
	if (error || !req->newptr)
		return (error);
	if (tmp_sb_max < MSIZE + MCLBYTES)
		return (EINVAL);
	sb_max = tmp_sb_max;
	sb_max_adj = (u_quad_t)sb_max * MCLBYTES / (MSIZE + MCLBYTES);
	return (0);
}
예제 #10
0
static int
pie_sysctl_max_ecnth_handler(SYSCTL_HANDLER_ARGS)
{
	int error;
	long  value;

	value = pie_sysctl.max_ecnth;
	value = value * 1000 / PIE_SCALE;
	error = sysctl_handle_long(oidp, &value, 0, req);
	if (error != 0 || req->newptr == NULL)
		return (error);
	if (value < 1 || value > PIE_SCALE)
		return (EINVAL);
	value = (value * PIE_SCALE) / 1000;
	pie_sysctl.max_ecnth = value;
	return (0);
}
예제 #11
0
static int
fqcodel_sysctl_interval_handler(SYSCTL_HANDLER_ARGS)
{
	int error;
	long  value;

	value = fq_codel_sysctl.ccfg.interval;
	value /= AQM_TIME_1US;
	error = sysctl_handle_long(oidp, &value, 0, req);
	if (error != 0 || req->newptr == NULL)
		return (error);
	if (value < 1 || value > 100 * AQM_TIME_1S)
		return (EINVAL);
	fq_codel_sysctl.ccfg.interval = value * AQM_TIME_1US ;

	return (0);
}
예제 #12
0
static int
pie_sysctl_alpha_beta_handler(SYSCTL_HANDLER_ARGS)
{
	int error;
	long  value;

	if (!strcmp(oidp->oid_name,"alpha"))
		value = pie_sysctl.alpha;
	else
		value = pie_sysctl.beta;
		
	value = value * 1000 / PIE_SCALE;
	error = sysctl_handle_long(oidp, &value, 0, req);
	if (error != 0 || req->newptr == NULL)
		return (error);
	if (value < 1 || value > 7 * PIE_SCALE)
		return (EINVAL);
	value = (value * PIE_SCALE) / 1000;
	if (!strcmp(oidp->oid_name,"alpha"))
			pie_sysctl.alpha = value;
	else
		pie_sysctl.beta = value;
	return (0);
}