예제 #1
0
파일: tmpfs_mem.c 프로젝트: ryo/netbsd-src
bool
tmpfs_mem_incr(struct tmpfs_mount *mp, size_t sz)
{
	uint64_t lim;

	mutex_enter(&mp->tm_acc_lock);
	lim = tmpfs_bytes_max(mp);
	if (mp->tm_bytes_used + sz >= lim) {
		mutex_exit(&mp->tm_acc_lock);
		return false;
	}
	mp->tm_bytes_used += sz;
	mutex_exit(&mp->tm_acc_lock);
	return true;
}
예제 #2
0
int
tmpfs_mem_incr(struct tmpfs_mount *mp, size_t sz)
{
	uint64_t lim;

	rw_enter_write(&mp->tm_acc_lock);
	lim = tmpfs_bytes_max(mp);
	if (mp->tm_bytes_used + sz >= lim) {
		rw_exit_write(&mp->tm_acc_lock);
		return 0;
	}
	mp->tm_bytes_used += sz;
	rw_exit_write(&mp->tm_acc_lock);
	return 1;
}
예제 #3
0
int
tmpfs_mem_incr(struct tmpfs_mount *mp, size_t sz)
{
	uint64_t lim;

	mtx_enter(&mp->tm_acc_lock);
	lim = tmpfs_bytes_max(mp);
	if (mp->tm_bytes_used + sz >= lim) {
		mtx_leave(&mp->tm_acc_lock);
		return 0;
	}
	mp->tm_bytes_used += sz;
	mtx_leave(&mp->tm_acc_lock);
	return 1;
}
예제 #4
0
파일: tmpfs_mem.c 프로젝트: ryo/netbsd-src
size_t
tmpfs_pages_avail(struct tmpfs_mount *mp)
{

	return (tmpfs_bytes_max(mp) - mp->tm_bytes_used) >> PAGE_SHIFT;
}