/[LeafOK_CVS]/lbbs/src/trie_dict.c
ViewVC logotype

Diff of /lbbs/src/trie_dict.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.24 by sysadm, Sat Nov 22 01:56:59 2025 UTC Revision 1.25 by sysadm, Fri Dec 19 06:16:27 2025 UTC
# Line 46  int trie_dict_init(const char *filename, Line 46  int trie_dict_init(const char *filename,
46    
47          if (filename == NULL)          if (filename == NULL)
48          {          {
49                  log_error("NULL pointer error\n");                  log_error("NULL pointer error");
50                  return -1;                  return -1;
51          }          }
52    
53          if (p_trie_node_pool != NULL)          if (p_trie_node_pool != NULL)
54          {          {
55                  log_error("trie_dict_pool already initialized\n");                  log_error("trie_dict_pool already initialized");
56                  return -1;                  return -1;
57          }          }
58    
59          if (node_count_limit <= 0 || node_count_limit > TRIE_NODE_PER_POOL)          if (node_count_limit <= 0 || node_count_limit > TRIE_NODE_PER_POOL)
60          {          {
61                  log_error("trie_dict_init(%d) error: invalid node_count_limit\n", node_count_limit);                  log_error("trie_dict_init(%d) error: invalid node_count_limit", node_count_limit);
62                  return -1;                  return -1;
63          }          }
64    
# Line 71  int trie_dict_init(const char *filename, Line 71  int trie_dict_init(const char *filename,
71    
72          if (shm_unlink(trie_node_shm_name) == -1 && errno != ENOENT)          if (shm_unlink(trie_node_shm_name) == -1 && errno != ENOENT)
73          {          {
74                  log_error("shm_unlink(%s) error (%d)\n", trie_node_shm_name, errno);                  log_error("shm_unlink(%s) error (%d)", trie_node_shm_name, errno);
75                  return -2;                  return -2;
76          }          }
77    
78          if ((fd = shm_open(trie_node_shm_name, O_CREAT | O_EXCL | O_RDWR, 0600)) == -1)          if ((fd = shm_open(trie_node_shm_name, O_CREAT | O_EXCL | O_RDWR, 0600)) == -1)
79          {          {
80                  log_error("shm_open(%s) error (%d)\n", trie_node_shm_name, errno);                  log_error("shm_open(%s) error (%d)", trie_node_shm_name, errno);
81                  return -2;                  return -2;
82          }          }
83          if (ftruncate(fd, (off_t)size) == -1)          if (ftruncate(fd, (off_t)size) == -1)
84          {          {
85                  log_error("ftruncate(size=%d) error (%d)\n", size, errno);                  log_error("ftruncate(size=%d) error (%d)", size, errno);
86                  close(fd);                  close(fd);
87                  return -2;                  return -2;
88          }          }
# Line 90  int trie_dict_init(const char *filename, Line 90  int trie_dict_init(const char *filename,
90          p_shm = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0L);          p_shm = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0L);
91          if (p_shm == MAP_FAILED)          if (p_shm == MAP_FAILED)
92          {          {
93                  log_error("mmap() error (%d)\n", errno);                  log_error("mmap() error (%d)", errno);
94                  close(fd);                  close(fd);
95                  return -2;                  return -2;
96          }          }
97    
98          if (close(fd) < 0)          if (close(fd) < 0)
99          {          {
100                  log_error("close(fd) error (%d)\n", errno);                  log_error("close(fd) error (%d)", errno);
101                  return -1;                  return -1;
102          }          }
103    
# Line 128  void trie_dict_cleanup(void) Line 128  void trie_dict_cleanup(void)
128    
129          if (shm_unlink(trie_node_shm_name) == -1 && errno != ENOENT)          if (shm_unlink(trie_node_shm_name) == -1 && errno != ENOENT)
130          {          {
131                  log_error("shm_unlink(%s) error (%d)\n", trie_node_shm_name, errno);                  log_error("shm_unlink(%s) error (%d)", trie_node_shm_name, errno);
132          }          }
133    
134          trie_node_shm_name[0] = '\0';          trie_node_shm_name[0] = '\0';
# Line 138  int set_trie_dict_shm_readonly(void) Line 138  int set_trie_dict_shm_readonly(void)
138  {  {
139          if (p_trie_node_pool != NULL && mprotect(p_trie_node_pool, p_trie_node_pool->shm_size, PROT_READ) < 0)          if (p_trie_node_pool != NULL && mprotect(p_trie_node_pool, p_trie_node_pool->shm_size, PROT_READ) < 0)
140          {          {
141                  log_error("mprotect() error (%d)\n", errno);                  log_error("mprotect() error (%d)", errno);
142                  return -1;                  return -1;
143          }          }
144    
# Line 149  int detach_trie_dict_shm(void) Line 149  int detach_trie_dict_shm(void)
149  {  {
150          if (p_trie_node_pool != NULL && munmap(p_trie_node_pool, p_trie_node_pool->shm_size) < 0)          if (p_trie_node_pool != NULL && munmap(p_trie_node_pool, p_trie_node_pool->shm_size) < 0)
151          {          {
152                  log_error("munmap() error (%d)\n", errno);                  log_error("munmap() error (%d)", errno);
153                  return -1;                  return -1;
154          }          }
155    
# Line 173  TRIE_NODE *trie_dict_create(void) Line 173  TRIE_NODE *trie_dict_create(void)
173          }          }
174          else if (p_trie_node_pool != NULL)          else if (p_trie_node_pool != NULL)
175          {          {
176                  log_error("trie_dict_create() error: node depleted %d >= %d\n", p_trie_node_pool->node_count, p_trie_node_pool->node_count_limit);                  log_error("trie_dict_create() error: node depleted %d >= %d", p_trie_node_pool->node_count, p_trie_node_pool->node_count_limit);
177          }          }
178    
179          return p_dict;          return p_dict;


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1