1 /* 2 * Copyright (C) 2015-2017 Alibaba Group Holding Limited 3 */ 4 5 #include <stdint.h> 6 7 #include "k_api.h" 8 9 #include "vfs_adapt.h" 10 vfs_lock_create(void)11void *vfs_lock_create(void) 12 { 13 int32_t ret; 14 kmutex_t *m; 15 16 m = krhino_mm_alloc(sizeof(kmutex_t)); 17 if (m == NULL) { 18 return NULL; 19 } 20 21 ret = krhino_mutex_create(m, "VFS"); 22 if (ret != RHINO_SUCCESS) { 23 krhino_mm_free(m); 24 return NULL; 25 } 26 27 return (void *)m; 28 } 29 vfs_lock_free(void * lock)30int32_t vfs_lock_free(void *lock) 31 { 32 int32_t ret; 33 34 kmutex_t *m = (kmutex_t *)lock; 35 36 if (m == NULL) { 37 return -1; 38 } 39 40 ret = krhino_mutex_del(m); 41 if (ret != RHINO_SUCCESS) { 42 return ret; 43 } 44 45 krhino_mm_free(m); 46 47 return ret; 48 } 49 vfs_lock(void * lock)50int32_t vfs_lock(void *lock) 51 { 52 int ret = krhino_mutex_lock((kmutex_t *)lock, RHINO_WAIT_FOREVER); 53 54 if (ret == RHINO_MUTEX_OWNER_NESTED) { 55 ret = RHINO_SUCCESS; 56 } 57 58 return ret; 59 } 60 vfs_unlock(void * lock)61int32_t vfs_unlock(void *lock) 62 { 63 int ret = krhino_mutex_unlock((kmutex_t *)lock); 64 65 if (ret == RHINO_MUTEX_OWNER_NESTED) { 66 ret = RHINO_SUCCESS; 67 } 68 69 return ret; 70 } 71 vfs_malloc(uint32_t size)72void *vfs_malloc(uint32_t size) 73 { 74 return krhino_mm_alloc(size); 75 } 76 vfs_free(void * ptr)77void vfs_free(void *ptr) 78 { 79 krhino_mm_free(ptr); 80 } 81