Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(445)

Side by Side Diff: native_client_sdk/src/libraries/nacl_mounts/inode_pool.h

Issue 12194030: Rename mount (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix whitespace Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /* Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file.
4 */
5
6 #ifndef LIBRARIES_NACL_MOUNTS_INODE_POOL_H_
7 #define LIBRARIES_NACL_MOUNTS_INODE_POOL_H_
8
9 #include <stdlib.h>
10 #include <vector>
11
12 #include "nacl_mounts/osstat.h"
13 #include "pthread.h"
14 #include "utils/auto_lock.h"
15
16
17 class INodePool {
18 public:
19 INodePool()
20 : max_nodes_(0),
21 num_nodes_(0) {
22 pthread_mutex_init(&lock_, NULL);
23 }
24 ~INodePool() {
25 pthread_mutex_destroy(&lock_);
26 }
27
28 ino_t Acquire() {
29 AutoLock lock(&lock_);
30 const int INO_CNT = 8;
31
32 // If we run out of INO numbers, then allocate 8 more
33 if (inos_.size() == 0) {
34 max_nodes_ += INO_CNT;
35 // Add eight more to the stack in reverse order, offset by 1
36 // since '0' refers to no INO.
37 for (int a = 0; a < INO_CNT; a++) {
38 inos_.push_back(max_nodes_ - a);
39 }
40 }
41
42 // Return the INO at the top of the stack.
43 int val = inos_.back();
44 inos_.pop_back();
45 num_nodes_++;
46 return val;
47 }
48
49 void Release(ino_t ino) {
50 AutoLock lock(&lock_);
51 inos_.push_back(ino);
52 num_nodes_--;
53 }
54
55 size_t size() const { return num_nodes_; }
56 size_t capacity() const { return max_nodes_; }
57
58 private:
59 size_t num_nodes_;
60 size_t max_nodes_;
61 std::vector<ino_t> inos_;
62 pthread_mutex_t lock_;
63 };
64
65 #endif // LIBRARIES_NACL_MOUNTS_INODE_POOL_H_
OLDNEW
« no previous file with comments | « native_client_sdk/src/libraries/nacl_mounts/Makefile ('k') | native_client_sdk/src/libraries/nacl_mounts/kernel_handle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698