Lines Matching refs:pn
63 int ProcMatch(unsigned int len, const char *name, struct ProcDirEntry *pn) in ProcMatch() argument
65 if (len != pn->nameLen) { in ProcMatch()
68 return !strncmp(name, pn->name, len); in ProcMatch()
73 struct ProcDirEntry *pn = NULL; in ProcFindNode() local
77 return pn; in ProcFindNode()
81 for (pn = parent->subdir; pn != NULL; pn = pn->next) { in ProcFindNode()
82 if ((length == pn->nameLen) && strcmp(pn->name, name) == 0) { in ProcFindNode()
87 return pn; in ProcFindNode()
98 struct ProcDirEntry *pn = NULL; in ProcFindEntry() local
113 return pn; in ProcFindEntry()
118 pn = &g_procRootDirEntry; in ProcFindEntry()
120 while ((pn != NULL) && (levelcount < leveltotal)) { in ProcFindEntry()
123 while (pn != NULL) { in ProcFindEntry()
126 while (pn != NULL) { in ProcFindEntry()
127 if (strcmp(path, pn->name) == 0) { in ProcFindEntry()
129 return pn; in ProcFindEntry()
131 pn = pn->next; in ProcFindEntry()
133 pn = NULL; in ProcFindEntry()
135 return pn; in ProcFindEntry()
139 if (pn == &g_procRootDirEntry) { in ProcFindEntry()
142 return pn; in ProcFindEntry()
146 if (ProcMatch(len, path, pn)) { in ProcFindEntry()
152 pn = pn->next; in ProcFindEntry()
155 if ((isfoundsub == 1) && (pn != NULL)) { in ProcFindEntry()
156 pn = pn->subdir; in ProcFindEntry()
158 pn = NULL; in ProcFindEntry()
160 return pn; in ProcFindEntry()
169 struct ProcDirEntry *pn = *parent; in CheckProcName() local
174 if (pn == NULL) { in CheckProcName()
175 pn = &g_procRootDirEntry; in CheckProcName()
183 for (pn = pn->subdir; pn != NULL; pn = pn->next) { in CheckProcName()
184 if (ProcMatch(length, segment, pn)) { in CheckProcName()
188 if (pn == NULL) { in CheckProcName()
197 *parent = pn; in CheckProcName()
205 struct ProcDirEntry *pn = NULL; in ProcAllocNode() local
210 return pn; in ProcAllocNode()
214 return pn; in ProcAllocNode()
218 return pn; in ProcAllocNode()
222 return pn; in ProcAllocNode()
225 pn = (struct ProcDirEntry *)malloc(sizeof(struct ProcDirEntry)); in ProcAllocNode()
226 if (pn == NULL) { in ProcAllocNode()
234 (void)memset_s(pn, sizeof(struct ProcDirEntry), 0, sizeof(struct ProcDirEntry)); in ProcAllocNode()
235 pn->nameLen = strlen(lastName); in ProcAllocNode()
236 pn->mode = mode; in ProcAllocNode()
237 ret = memcpy_s(pn->name, sizeof(pn->name), lastName, strlen(lastName) + 1); in ProcAllocNode()
239 free(pn); in ProcAllocNode()
243 pn->pf = (struct ProcFile *)malloc(sizeof(struct ProcFile)); in ProcAllocNode()
244 if (pn->pf == NULL) { in ProcAllocNode()
245 free(pn); in ProcAllocNode()
248 (void)memset_s(pn->pf, sizeof(struct ProcFile), 0, sizeof(struct ProcFile)); in ProcAllocNode()
249 pn->pf->pPDE = pn; in ProcAllocNode()
250 ret = memcpy_s(pn->pf->name, sizeof(pn->pf->name), pn->name, pn->nameLen + 1); in ProcAllocNode()
252 free(pn->pf); in ProcAllocNode()
253 free(pn); in ProcAllocNode()
257 atomic_set(&pn->count, 1); in ProcAllocNode()
258 spin_lock_init(&pn->pdeUnloadLock); in ProcAllocNode()
259 return pn; in ProcAllocNode()
262 static int ProcAddNode(struct ProcDirEntry *parent, struct ProcDirEntry *pn) in ProcAddNode() argument
271 if (pn->parent != NULL) { in ProcAddNode()
283 temp = ProcFindNode(parent, pn->name); in ProcAddNode()
285 PRINT_ERR("Error!ProcDirEntry '%s/%s' already registered\n", parent->name, pn->name); in ProcAddNode()
290 pn->parent = parent; in ProcAddNode()
291 pn->next = parent->subdir; in ProcAddNode()
292 parent->subdir = pn; in ProcAddNode()
299 void ProcDetachNode(struct ProcDirEntry *pn) in ProcDetachNode() argument
301 struct ProcDirEntry *parent = pn->parent; in ProcDetachNode()
311 if (*iter == pn) { in ProcDetachNode()
312 *iter = pn->next; in ProcDetachNode()
317 pn->parent = NULL; in ProcDetachNode()
323 struct ProcDirEntry *pn = NULL; in ProcCreateDir() local
326 pn = ProcAllocNode(&parent, name, S_IFDIR | mode); in ProcCreateDir()
327 if (pn == NULL) { in ProcCreateDir()
328 return pn; in ProcCreateDir()
330 pn->procFileOps = procFileOps; in ProcCreateDir()
331 pn->type = VNODE_TYPE_DIR; in ProcCreateDir()
332 ret = ProcAddNode(parent, pn); in ProcCreateDir()
334 free(pn->pf); in ProcCreateDir()
335 free(pn); in ProcCreateDir()
339 return pn; in ProcCreateDir()
345 struct ProcDirEntry *pn = NULL; in ProcCreateFile() local
348 pn = ProcAllocNode(&parent, name, S_IFREG | mode); in ProcCreateFile()
349 if (pn == NULL) { in ProcCreateFile()
350 return pn; in ProcCreateFile()
353 pn->procFileOps = procFileOps; in ProcCreateFile()
354 pn->type = VNODE_TYPE_REG; in ProcCreateFile()
357 pn->type = VNODE_TYPE_VIR_LNK; in ProcCreateFile()
360 ret = ProcAddNode(parent, pn); in ProcCreateFile()
362 free(pn->pf); in ProcCreateFile()
363 free(pn); in ProcCreateFile()
367 return pn; in ProcCreateFile()
418 void ProcFreeEntry(struct ProcDirEntry *pn) in ProcFreeEntry() argument
420 if (atomic_dec_and_test(&pn->count)) { in ProcFreeEntry()
421 FreeProcEntry(pn); in ProcFreeEntry()
425 void RemoveProcEntryTravalsal(struct ProcDirEntry *pn) in RemoveProcEntryTravalsal() argument
427 if (pn == NULL) { in RemoveProcEntryTravalsal()
430 RemoveProcEntryTravalsal(pn->next); in RemoveProcEntryTravalsal()
431 RemoveProcEntryTravalsal(pn->subdir); in RemoveProcEntryTravalsal()
433 ProcEntryClearVnode(pn); in RemoveProcEntryTravalsal()
435 ProcFreeEntry(pn); in RemoveProcEntryTravalsal()
440 struct ProcDirEntry *pn = NULL; in RemoveProcEntry() local
453 pn = ProcFindNode(parent, lastName); in RemoveProcEntry()
454 if (pn == NULL) { in RemoveProcEntry()
459 ProcDetachNode(pn); in RemoveProcEntry()
463 RemoveProcEntryTravalsal(pn->subdir); in RemoveProcEntry()
465 ProcEntryClearVnode(pn); in RemoveProcEntry()
467 ProcFreeEntry(pn); in RemoveProcEntry()
504 struct ProcDirEntry *pn = NULL; in ProcStat() local
508 pn = ProcFindEntry(file); in ProcStat()
509 if (pn == NULL) { in ProcStat()
512 ret = strncpy_s(buf->name, len, pn->name, len - 1); in ProcStat()
517 buf->stMode = pn->mode; in ProcStat()
518 buf->pPDE = pn; in ProcStat()
523 static int GetNextDir(struct ProcDirEntry *pn, void *buf, size_t len) in GetNextDir() argument
527 if (pn->pdirCurrent == NULL) { in GetNextDir()
531 int namelen = pn->pdirCurrent->nameLen; in GetNextDir()
532 int ret = memcpy_s(buff, len, pn->pdirCurrent->name, namelen); in GetNextDir()
537 pn->pdirCurrent = pn->pdirCurrent->next; in GetNextDir()
538 pn->pf->fPos++; in GetNextDir()
594 struct ProcDirEntry *pn = ProcFindEntry(fileName); in OpenProcFile() local
595 if (pn == NULL) { in OpenProcFile()
599 if (S_ISREG(pn->mode) && (pn->count != 1)) { in OpenProcFile()
603 pn->flags = (unsigned int)(pn->flags) | (unsigned int)flags; in OpenProcFile()
604 atomic_set(&pn->count, PROC_INUSE); in OpenProcFile()
605 if (ProcOpen(pn->pf) != OK) { in OpenProcFile()
608 if (S_ISREG(pn->mode) && (pn->procFileOps != NULL) && (pn->procFileOps->open != NULL)) { in OpenProcFile()
609 (void)pn->procFileOps->open((struct Vnode *)pn, pn->pf); in OpenProcFile()
611 if (S_ISDIR(pn->mode)) { in OpenProcFile()
612 pn->pdirCurrent = pn->subdir; in OpenProcFile()
613 pn->pf->fPos = 0; in OpenProcFile()
616 return pn; in OpenProcFile()