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; }
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; }
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; }
size_t tmpfs_pages_avail(struct tmpfs_mount *mp) { return (tmpfs_bytes_max(mp) - mp->tm_bytes_used) >> PAGE_SHIFT; }