yaffs_inodecount.argtypes = [c_char_p]
yaffs_inodecount.restype = c_int
+#int yaffs_n_handles(const YCHAR *path)
+yaffs_n_handles = ylib.yaffs_n_handles
+yaffs_n_handles.argtypes = [c_char_p]
+yaffs_n_handles.restype = c_int
+
#int yaffs_StartUp(void)
yaffs_StartUp = ylib.yaffs_StartUp
yaffs_StartUp.argtypes = []
}
/*
- * yaffsfs_GetInodeIdForObject
- * Grab an inode entry when opening a new inode.
+ * yaffsfs_FindInodeIdForObject
+ * Find the inode entry for an object, if it exists.
*/
-static int yaffsfs_GetInodeIdForObject(yaffs_Object *obj)
+static int yaffsfs_FindInodeIdForObject(yaffs_Object *obj)
{
int i;
int ret = -1;
- yaffsfs_Inode *in = NULL;
if(obj)
obj = yaffs_GetEquivalentObject(obj);
- /* Look for it. If we can't find it then make one */
+ /* Look for it in open inode table*/
for(i = 0; i < YAFFSFS_N_HANDLES && ret < 0; i++){
if(yaffsfs_inode[i].iObj == obj)
ret = i;
}
+ return ret;
+}
+
+/*
+ * yaffsfs_GetInodeIdForObject
+ * Grab an inode entry when opening a new inode.
+ */
+static int yaffsfs_GetInodeIdForObject(yaffs_Object *obj)
+{
+ int i;
+ int ret;
+ yaffsfs_Inode *in = NULL;
+
+ if(obj)
+ obj = yaffs_GetEquivalentObject(obj);
+
+ ret = yaffsfs_FindInodeIdForObject(obj);
for(i = 0; i < YAFFSFS_N_HANDLES && ret < 0; i++){
if(!yaffsfs_inode[i].iObj)
ret = i;
}
-
-
+
if(ret>=0){
in = &yaffsfs_inode[ret];
if(!in->iObj)
return ret;
}
+
+static int yaffsfs_CountHandles(yaffs_Object *obj)
+{
+ int i = yaffsfs_FindInodeIdForObject(obj);
+
+ if(i >= 0)
+ return yaffsfs_inode[i].count;
+ else
+ return 0;
+}
+
static void yaffsfs_ReleaseInode(yaffsfs_Inode *in)
{
yaffs_Object *obj;
return -1;
}
+
+
+/*
+ * yaffs_n_handles()
+ * Returns number of handles attached to the object
+ */
+int yaffs_n_handles(const YCHAR *path)
+{
+ yaffs_Object *obj;
+
+ obj = yaffsfs_FindObject(NULL,path,0);
+ if(obj)
+ obj = yaffs_GetEquivalentObject(obj);
+
+ return yaffsfs_CountHandles(obj);
+}
+
int yaffs_DumpDevStruct(const YCHAR *path)
{
#if 0