- Timestamp:
- 2012-03-04T18:52:28Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 38b950f
- Parents:
- 6561a8e (diff), 0499235 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace
- Files:
-
- 4 added
- 16 edited
-
Makefile (modified) (1 diff)
-
app/mkexfat/Makefile (added)
-
app/mkexfat/exfat.h (added)
-
app/mkexfat/mkexfat.c (added)
-
app/mkexfat/upcase.h (added)
-
app/sysinfo/sysinfo.c (modified) (4 diffs)
-
drv/bus/usb/uhci/transfer_list.c (modified) (4 diffs)
-
drv/bus/usb/uhci/uhci_batch.c (modified) (1 diff)
-
drv/char/ps2mouse/ps2mouse.c (modified) (1 diff)
-
lib/c/generic/str.c (modified) (1 diff)
-
lib/c/generic/sysinfo.c (modified) (4 diffs)
-
lib/c/include/str.h (modified) (1 diff)
-
lib/c/include/sysinfo.h (modified) (1 diff)
-
srv/fs/exfat/exfat_bitmap.c (modified) (13 diffs)
-
srv/fs/exfat/exfat_bitmap.h (modified) (1 diff)
-
srv/fs/exfat/exfat_dentry.c (modified) (1 diff)
-
srv/fs/exfat/exfat_dentry.h (modified) (1 diff)
-
srv/fs/exfat/exfat_directory.c (modified) (1 diff)
-
srv/fs/exfat/exfat_fat.c (modified) (4 diffs)
-
srv/fs/exfat/exfat_ops.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/Makefile
r6561a8e r98cb0495 48 48 app/lsusb \ 49 49 app/mkfat \ 50 app/mkexfat \ 50 51 app/mkmfs \ 51 52 app/redir \ -
uspace/app/sysinfo/sysinfo.c
r6561a8e r98cb0495 37 37 #include <stdio.h> 38 38 #include <sysinfo.h> 39 #include <malloc.h> 39 40 #include <sys/types.h> 40 41 41 static int print_item_val(char *ipath); 42 static int print_item_data(char *ipath); 43 44 static void dump_bytes_hex(char *data, size_t size); 45 static void dump_bytes_text(char *data, size_t size); 46 47 static void print_syntax(void); 48 49 int main(int argc, char *argv[]) 50 { 51 int rc; 52 char *ipath; 53 sysinfo_item_val_type_t tag; 54 55 if (argc != 2) { 56 print_syntax(); 57 return 1; 58 } 59 60 ipath = argv[1]; 61 62 tag = sysinfo_get_val_type(ipath); 63 64 /* Silence warning */ 65 rc = EOK; 66 67 switch (tag) { 68 case SYSINFO_VAL_UNDEFINED: 69 printf("Error: Sysinfo item '%s' not defined.\n", ipath); 70 rc = 2; 71 break; 72 case SYSINFO_VAL_VAL: 73 rc = print_item_val(ipath); 74 break; 75 case SYSINFO_VAL_DATA: 76 rc = print_item_data(ipath); 77 break; 78 default: 79 printf("Error: Sysinfo item '%s' with unknown value type.\n", 80 ipath); 81 rc = 2; 82 break; 83 } 84 85 return rc; 42 static void dump_bytes_hex(char *data, size_t size) 43 { 44 for (size_t i = 0; i < size; i++) { 45 if (i > 0) 46 putchar(' '); 47 printf("0x%02x", (uint8_t) data[i]); 48 } 49 } 50 51 static void dump_bytes_text(char *data, size_t size) 52 { 53 size_t offset = 0; 54 55 while (offset < size) { 56 wchar_t c = str_decode(data, &offset, size); 57 printf("%lc", (wint_t) c); 58 } 86 59 } 87 60 … … 89 62 { 90 63 sysarg_t value; 91 int rc; 92 93 rc = sysinfo_get_value(ipath, &value); 64 int rc = sysinfo_get_value(ipath, &value); 94 65 if (rc != EOK) { 95 66 printf("Error reading item '%s'.\n", ipath); 96 67 return rc; 97 68 } 98 69 99 70 printf("%s -> %" PRIu64 " (0x%" PRIx64 ")\n", ipath, 100 71 (uint64_t) value, (uint64_t) value); 101 72 102 73 return EOK; 103 74 } … … 105 76 static int print_item_data(char *ipath) 106 77 { 107 void *data;108 78 size_t size; 109 110 data = sysinfo_get_data(ipath, &size); 79 void *data = sysinfo_get_data(ipath, &size); 111 80 if (data == NULL) { 112 81 printf("Error reading item '%s'.\n", ipath); 113 82 return -1; 114 83 } 115 84 116 85 printf("%s -> ", ipath); 117 86 dump_bytes_hex(data, size); … … 119 88 dump_bytes_text(data, size); 120 89 fputs("')\n", stdout); 121 90 122 91 return EOK; 123 92 } 124 93 125 static void dump_bytes_hex(char *data, size_t size) 126 { 127 size_t i; 128 129 for (i = 0; i < size; ++i) { 130 if (i > 0) putchar(' '); 131 printf("0x%02x", (uint8_t) data[i]); 132 } 133 } 134 135 static void dump_bytes_text(char *data, size_t size) 136 { 137 wchar_t c; 138 size_t offset; 139 140 offset = 0; 141 142 while (offset < size) { 143 c = str_decode(data, &offset, size); 144 printf("%lc", (wint_t) c); 145 } 146 } 147 148 149 static void print_syntax(void) 150 { 151 printf("Syntax: sysinfo <item_path>\n"); 94 static int print_item_property(char *ipath, char *iprop) 95 { 96 size_t size; 97 void *data = sysinfo_get_property(ipath, iprop, &size); 98 if (data == NULL) { 99 printf("Error reading property '%s' of item '%s'.\n", iprop, 100 ipath); 101 return -1; 102 } 103 104 printf("%s property %s -> ", ipath, iprop); 105 dump_bytes_hex(data, size); 106 fputs(" ('", stdout); 107 dump_bytes_text(data, size); 108 fputs("')\n", stdout); 109 110 return EOK; 111 } 112 113 static void print_spaces(size_t spaces) 114 { 115 for (size_t i = 0; i < spaces; i++) 116 printf(" "); 117 } 118 119 static void print_keys(const char *path, size_t spaces) 120 { 121 size_t size; 122 char *keys = sysinfo_get_keys(path, &size); 123 if ((keys == NULL) || (size == 0)) 124 return; 125 126 size_t pos = 0; 127 while (pos < size) { 128 /* Process each key with sanity checks */ 129 size_t cur_size = str_nsize(keys + pos, size - pos); 130 if (keys[pos + cur_size] != 0) 131 break; 132 133 size_t path_size = str_size(path) + cur_size + 2; 134 char *cur_path = (char *) malloc(path_size); 135 if (cur_path == NULL) 136 break; 137 138 size_t length; 139 140 if (path[0] != 0) { 141 print_spaces(spaces); 142 printf(".%s\n", keys + pos); 143 length = str_length(keys + pos) + 1; 144 145 snprintf(cur_path, path_size, "%s.%s", path, keys + pos); 146 } else { 147 printf("%s\n", keys + pos); 148 length = str_length(keys + pos); 149 150 snprintf(cur_path, path_size, "%s", keys + pos); 151 } 152 153 print_keys(cur_path, spaces + length); 154 155 free(cur_path); 156 pos += cur_size + 1; 157 } 158 159 free(keys); 160 } 161 162 int main(int argc, char *argv[]) 163 { 164 int rc = 0; 165 166 if (argc < 2) { 167 /* Print keys */ 168 print_keys("", 0); 169 return rc; 170 } 171 172 char *ipath = argv[1]; 173 174 if (argc < 3) { 175 sysinfo_item_val_type_t tag = sysinfo_get_val_type(ipath); 176 177 switch (tag) { 178 case SYSINFO_VAL_UNDEFINED: 179 printf("Error: Sysinfo item '%s' not defined.\n", ipath); 180 rc = 2; 181 break; 182 case SYSINFO_VAL_VAL: 183 rc = print_item_val(ipath); 184 break; 185 case SYSINFO_VAL_DATA: 186 rc = print_item_data(ipath); 187 break; 188 default: 189 printf("Error: Sysinfo item '%s' with unknown value type.\n", 190 ipath); 191 rc = 2; 192 break; 193 } 194 195 return rc; 196 } 197 198 char *iprop = argv[2]; 199 rc = print_item_property(ipath, iprop); 200 return rc; 152 201 } 153 202 -
uspace/drv/bus/usb/uhci/transfer_list.c
r6561a8e r98cb0495 110 110 assert(instance); 111 111 assert(uhci_batch); 112 usb_log_debug2(" Queue %s: Adding batch(%p).\n", instance->name,113 uhci_batch->usb_batch );112 usb_log_debug2("Batch %p adding to queue %s.\n", 113 uhci_batch->usb_batch, instance->name); 114 114 115 115 fibril_mutex_lock(&instance->guard); … … 139 139 list_append(&uhci_batch->link, &instance->batch_list); 140 140 141 usb_log_debug2("Batch %p " USB_TRANSFER_BATCH_FMT " scheduled in queue %s.\n",142 uhci_batch, USB_TRANSFER_BATCH_ARGS(*uhci_batch->usb_batch),143 instance->name);141 usb_log_debug2("Batch %p " USB_TRANSFER_BATCH_FMT 142 " scheduled in queue %s.\n", uhci_batch->usb_batch, 143 USB_TRANSFER_BATCH_ARGS(*uhci_batch->usb_batch), instance->name); 144 144 fibril_mutex_unlock(&instance->guard); 145 145 } … … 205 205 assert(fibril_mutex_is_locked(&instance->guard)); 206 206 207 usb_log_debug2(" Queue %s: removing batch(%p).\n",208 instance->name, uhci_batch->usb_batch);207 usb_log_debug2("Batch %p removing from queue %s.\n", 208 uhci_batch->usb_batch, instance->name); 209 209 210 210 /* Assume I'm the first */ … … 228 228 list_remove(&uhci_batch->link); 229 229 usb_log_debug2("Batch %p " USB_TRANSFER_BATCH_FMT " removed (%s) " 230 "from %s, next: %x.\n", 231 uhci_batch,USB_TRANSFER_BATCH_ARGS(*uhci_batch->usb_batch),230 "from %s, next: %x.\n", uhci_batch->usb_batch, 231 USB_TRANSFER_BATCH_ARGS(*uhci_batch->usb_batch), 232 232 qpos, instance->name, uhci_batch->qh->next); 233 233 } -
uspace/drv/bus/usb/uhci/uhci_batch.c
r6561a8e r98cb0495 174 174 assert(uhci_batch->usb_batch->ep != NULL); 175 175 176 usb_log_debug("Batch (%p) found error TD(%zu):%"176 usb_log_debug("Batch %p found error TD(%zu->%p):%" 177 177 PRIx32 ".\n", uhci_batch->usb_batch, i, 178 uhci_batch->tds[i].status);178 &uhci_batch->tds[i], uhci_batch->tds[i].status); 179 179 td_print_status(&uhci_batch->tds[i]); 180 180 -
uspace/drv/char/ps2mouse/ps2mouse.c
r6561a8e r98cb0495 80 80 } \ 81 81 if (data != (value)) { \ 82 ddf_msg(LVL_ ERROR, "Failed testing byte: got %hhx vs. %hhx)", \82 ddf_msg(LVL_DEBUG, "Failed testing byte: got %hhx vs. %hhx)", \ 83 83 data, (value)); \ 84 84 return EIO; \ -
uspace/lib/c/generic/str.c
r6561a8e r98cb0495 259 259 260 260 return offset; 261 } 262 263 /** Get size of string with size limit. 264 * 265 * Get the number of bytes which are used by the string @a str 266 * (excluding the NULL-terminator), but no more than @max_size bytes. 267 * 268 * @param str String to consider. 269 * @param max_size Maximum number of bytes to measure. 270 * 271 * @return Number of bytes used by the string 272 * 273 */ 274 size_t str_nsize(const char *str, size_t max_size) 275 { 276 size_t size = 0; 277 278 while ((*str++ != 0) && (size < max_size)) 279 size++; 280 281 return size; 282 } 283 284 /** Get size of wide string with size limit. 285 * 286 * Get the number of bytes which are used by the wide string @a str 287 * (excluding the NULL-terminator), but no more than @max_size bytes. 288 * 289 * @param str Wide string to consider. 290 * @param max_size Maximum number of bytes to measure. 291 * 292 * @return Number of bytes used by the wide string 293 * 294 */ 295 size_t wstr_nsize(const wchar_t *str, size_t max_size) 296 { 297 return (wstr_nlength(str, max_size) * sizeof(wchar_t)); 261 298 } 262 299 -
uspace/lib/c/generic/sysinfo.c
r6561a8e r98cb0495 40 40 #include <bool.h> 41 41 42 /** Get sysinfo keys size 43 * 44 * @param path Sysinfo path. 45 * @param value Pointer to store the keys size. 46 * 47 * @return EOK if the keys were successfully read. 48 * 49 */ 50 static int sysinfo_get_keys_size(const char *path, size_t *size) 51 { 52 return (int) __SYSCALL3(SYS_SYSINFO_GET_KEYS_SIZE, (sysarg_t) path, 53 (sysarg_t) str_size(path), (sysarg_t) size); 54 } 55 56 /** Get sysinfo keys 57 * 58 * @param path Sysinfo path. 59 * @param value Pointer to store the keys size. 60 * 61 * @return Keys read from sysinfo or NULL if the 62 * sysinfo item has no subkeys. 63 * The returned non-NULL pointer should be 64 * freed by free(). 65 * 66 */ 67 char *sysinfo_get_keys(const char *path, size_t *size) 68 { 69 /* 70 * The size of the keys might change during time. 71 * Unfortunatelly we cannot allocate the buffer 72 * and transfer the keys as a single atomic operation. 73 */ 74 75 /* Get the keys size */ 76 int ret = sysinfo_get_keys_size(path, size); 77 if ((ret != EOK) || (size == 0)) { 78 /* 79 * Item with no subkeys. 80 */ 81 *size = 0; 82 return NULL; 83 } 84 85 char *data = malloc(*size); 86 if (data == NULL) { 87 *size = 0; 88 return NULL; 89 } 90 91 /* Get the data */ 92 size_t sz; 93 ret = __SYSCALL5(SYS_SYSINFO_GET_KEYS, (sysarg_t) path, 94 (sysarg_t) str_size(path), (sysarg_t) data, (sysarg_t) *size, 95 (sysarg_t) &sz); 96 if (ret == EOK) { 97 *size = sz; 98 return data; 99 } 100 101 free(data); 102 *size = 0; 103 return NULL; 104 } 105 42 106 /** Get sysinfo item type 43 107 * … … 70 134 /** Get sysinfo binary data size 71 135 * 72 * @param path Sysinfo path.73 * @param value Pointer to store the binary data size.136 * @param path Sysinfo path. 137 * @param size Pointer to store the binary data size. 74 138 * 75 139 * @return EOK if the value was successfully read and … … 85 149 /** Get sysinfo binary data 86 150 * 87 * @param path Sysinfo path.88 * @param value Pointer to store the binary data size.151 * @param path Sysinfo path. 152 * @param size Pointer to store the binary data size. 89 153 * 90 154 * @return Binary data read from sysinfo or NULL if the … … 134 198 } 135 199 200 /** Get sysinfo property 201 * 202 * @param path Sysinfo path. 203 * @param name Property name. 204 * @param size Pointer to store the binary data size. 205 * 206 * @return Property value read from sysinfo or NULL if the 207 * sysinfo item value type is not binary data. 208 * The returned non-NULL pointer should be 209 * freed by free(). 210 * 211 */ 212 void *sysinfo_get_property(const char *path, const char *name, size_t *size) 213 { 214 size_t total_size; 215 void *data = sysinfo_get_data(path, &total_size); 216 if ((data == NULL) || (total_size == 0)) { 217 *size = 0; 218 return NULL; 219 } 220 221 size_t pos = 0; 222 while (pos < total_size) { 223 /* Process each property with sanity checks */ 224 size_t cur_size = str_nsize(data + pos, total_size - pos); 225 if (((char *) data)[pos + cur_size] != 0) 226 break; 227 228 bool found = (str_cmp(data + pos, name) == 0); 229 230 pos += cur_size + 1; 231 if (pos >= total_size) 232 break; 233 234 /* Process value size */ 235 size_t value_size; 236 memcpy(&value_size, data + pos, sizeof(value_size)); 237 238 pos += sizeof(value_size); 239 if ((pos >= total_size) || (pos + value_size > total_size)) 240 break; 241 242 if (found) { 243 void *value = malloc(value_size); 244 if (value == NULL) 245 break; 246 247 memcpy(value, data + pos, value_size); 248 free(data); 249 250 *size = value_size; 251 return value; 252 } 253 254 pos += value_size; 255 } 256 257 free(data); 258 259 *size = 0; 260 return NULL; 261 } 262 136 263 /** @} 137 264 */ -
uspace/lib/c/include/str.h
r6561a8e r98cb0495 60 60 extern size_t str_size(const char *str); 61 61 extern size_t wstr_size(const wchar_t *str); 62 63 extern size_t str_nsize(const char *str, size_t max_size); 64 extern size_t wstr_nsize(const wchar_t *str, size_t max_size); 62 65 63 66 extern size_t str_lsize(const char *str, size_t max_len); -
uspace/lib/c/include/sysinfo.h
r6561a8e r98cb0495 40 40 #include <abi/sysinfo.h> 41 41 42 extern char *sysinfo_get_keys(const char *, size_t *); 42 43 extern sysinfo_item_val_type_t sysinfo_get_val_type(const char *); 43 44 extern int sysinfo_get_value(const char *, sysarg_t *); 44 45 extern void *sysinfo_get_data(const char *, size_t *); 46 extern void *sysinfo_get_property(const char *, const char *, size_t *); 45 47 46 48 #endif -
uspace/srv/fs/exfat/exfat_bitmap.c
r6561a8e r98cb0495 48 48 49 49 50 int bitmap_is_free(exfat_bs_t *bs, service_id_t service_id,50 int exfat_bitmap_is_free(exfat_bs_t *bs, service_id_t service_id, 51 51 exfat_cluster_t clst) 52 52 { … … 89 89 } 90 90 91 int bitmap_set_cluster(exfat_bs_t *bs, service_id_t service_id,91 int exfat_bitmap_set_cluster(exfat_bs_t *bs, service_id_t service_id, 92 92 exfat_cluster_t clst) 93 93 { … … 124 124 } 125 125 126 int bitmap_clear_cluster(exfat_bs_t *bs, service_id_t service_id,126 int exfat_bitmap_clear_cluster(exfat_bs_t *bs, service_id_t service_id, 127 127 exfat_cluster_t clst) 128 128 { … … 160 160 } 161 161 162 int bitmap_set_clusters(exfat_bs_t *bs, service_id_t service_id,162 int exfat_bitmap_set_clusters(exfat_bs_t *bs, service_id_t service_id, 163 163 exfat_cluster_t firstc, exfat_cluster_t count) 164 164 { … … 168 168 169 169 while (clst < firstc + count ) { 170 rc = bitmap_set_cluster(bs, service_id, clst);170 rc = exfat_bitmap_set_cluster(bs, service_id, clst); 171 171 if (rc != EOK) { 172 172 if (clst - firstc > 0) 173 (void) bitmap_clear_clusters(bs, service_id,173 (void) exfat_bitmap_clear_clusters(bs, service_id, 174 174 firstc, clst - firstc); 175 175 return rc; … … 180 180 } 181 181 182 int bitmap_clear_clusters(exfat_bs_t *bs, service_id_t service_id,182 int exfat_bitmap_clear_clusters(exfat_bs_t *bs, service_id_t service_id, 183 183 exfat_cluster_t firstc, exfat_cluster_t count) 184 184 { … … 188 188 189 189 while (clst < firstc + count) { 190 rc = bitmap_clear_cluster(bs, service_id, clst);190 rc = exfat_bitmap_clear_cluster(bs, service_id, clst); 191 191 if (rc != EOK) 192 192 return rc; … … 196 196 } 197 197 198 int bitmap_alloc_clusters(exfat_bs_t *bs, service_id_t service_id,198 int exfat_bitmap_alloc_clusters(exfat_bs_t *bs, service_id_t service_id, 199 199 exfat_cluster_t *firstc, exfat_cluster_t count) 200 200 { … … 204 204 while (startc < DATA_CNT(bs) + 2) { 205 205 endc = startc; 206 while ( bitmap_is_free(bs, service_id, endc) == EOK) {206 while (exfat_bitmap_is_free(bs, service_id, endc) == EOK) { 207 207 if ((endc - startc) + 1 == count) { 208 208 *firstc = startc; 209 return bitmap_set_clusters(bs, service_id, startc, count);209 return exfat_bitmap_set_clusters(bs, service_id, startc, count); 210 210 } else 211 211 endc++; … … 217 217 218 218 219 int bitmap_append_clusters(exfat_bs_t *bs, exfat_node_t *nodep,219 int exfat_bitmap_append_clusters(exfat_bs_t *bs, exfat_node_t *nodep, 220 220 exfat_cluster_t count) 221 221 { 222 222 if (nodep->firstc == 0) { 223 return bitmap_alloc_clusters(bs, nodep->idx->service_id,223 return exfat_bitmap_alloc_clusters(bs, nodep->idx->service_id, 224 224 &nodep->firstc, count); 225 225 } else { … … 228 228 229 229 clst = lastc + 1; 230 while ( bitmap_is_free(bs, nodep->idx->service_id, clst) == EOK) {230 while (exfat_bitmap_is_free(bs, nodep->idx->service_id, clst) == EOK) { 231 231 if (clst - lastc == count){ 232 return bitmap_set_clusters(bs, nodep->idx->service_id,232 return exfat_bitmap_set_clusters(bs, nodep->idx->service_id, 233 233 lastc + 1, count); 234 234 } else … … 240 240 241 241 242 int bitmap_free_clusters(exfat_bs_t *bs, exfat_node_t *nodep,242 int exfat_bitmap_free_clusters(exfat_bs_t *bs, exfat_node_t *nodep, 243 243 exfat_cluster_t count) 244 244 { … … 247 247 lastc -= count; 248 248 249 return bitmap_clear_clusters(bs, nodep->idx->service_id, lastc + 1, count);250 } 251 252 253 int bitmap_replicate_clusters(exfat_bs_t *bs, exfat_node_t *nodep)249 return exfat_bitmap_clear_clusters(bs, nodep->idx->service_id, lastc + 1, count); 250 } 251 252 253 int exfat_bitmap_replicate_clusters(exfat_bs_t *bs, exfat_node_t *nodep) 254 254 { 255 255 int rc; -
uspace/srv/fs/exfat/exfat_bitmap.h
r6561a8e r98cb0495 42 42 struct exfat_bs; 43 43 44 extern int bitmap_alloc_clusters(struct exfat_bs *, service_id_t,44 extern int exfat_bitmap_alloc_clusters(struct exfat_bs *, service_id_t, 45 45 exfat_cluster_t *, exfat_cluster_t); 46 extern int bitmap_append_clusters(struct exfat_bs *, struct exfat_node *,46 extern int exfat_bitmap_append_clusters(struct exfat_bs *, struct exfat_node *, 47 47 exfat_cluster_t); 48 extern int bitmap_free_clusters(struct exfat_bs *, struct exfat_node *,48 extern int exfat_bitmap_free_clusters(struct exfat_bs *, struct exfat_node *, 49 49 exfat_cluster_t); 50 extern int bitmap_replicate_clusters(struct exfat_bs *, struct exfat_node *);50 extern int exfat_bitmap_replicate_clusters(struct exfat_bs *, struct exfat_node *); 51 51 52 extern int bitmap_is_free(struct exfat_bs *, service_id_t, exfat_cluster_t);53 extern int bitmap_set_cluster(struct exfat_bs *, service_id_t, exfat_cluster_t);54 extern int bitmap_clear_cluster(struct exfat_bs *, service_id_t,52 extern int exfat_bitmap_is_free(struct exfat_bs *, service_id_t, exfat_cluster_t); 53 extern int exfat_bitmap_set_cluster(struct exfat_bs *, service_id_t, exfat_cluster_t); 54 extern int exfat_bitmap_clear_cluster(struct exfat_bs *, service_id_t, 55 55 exfat_cluster_t); 56 56 57 extern int bitmap_set_clusters(struct exfat_bs *, service_id_t,57 extern int exfat_bitmap_set_clusters(struct exfat_bs *, service_id_t, 58 58 exfat_cluster_t, exfat_cluster_t); 59 extern int bitmap_clear_clusters(struct exfat_bs *, service_id_t,59 extern int exfat_bitmap_clear_clusters(struct exfat_bs *, service_id_t, 60 60 exfat_cluster_t, exfat_cluster_t); 61 61 -
uspace/srv/fs/exfat/exfat_dentry.c
r6561a8e r98cb0495 130 130 } 131 131 132 size_t utf16_length(const uint16_t *wstr)132 size_t exfat_utf16_length(const uint16_t *wstr) 133 133 { 134 134 size_t len = 0; -
uspace/srv/fs/exfat/exfat_dentry.h
r6561a8e r98cb0495 160 160 extern bool exfat_valid_name(const char *); 161 161 162 extern size_t utf16_length(const uint16_t *);162 extern size_t exfat_utf16_length(const uint16_t *); 163 163 164 164 -
uspace/srv/fs/exfat/exfat_directory.c
r6561a8e r98cb0495 371 371 ds.stream.valid_data_size = 0; 372 372 ds.stream.data_size = 0; 373 ds.stream.name_size = utf16_length(wname);373 ds.stream.name_size = exfat_utf16_length(wname); 374 374 ds.stream.hash = host2uint16_t_le(exfat_name_hash(wname, uctable, 375 375 uctable_chars)); -
uspace/srv/fs/exfat/exfat_fat.c
r6561a8e r98cb0495 314 314 clst++) { 315 315 /* Need to rewrite because of multiple exfat_bitmap_get calls */ 316 if ( bitmap_is_free(bs, service_id, clst) == EOK) {316 if (exfat_bitmap_is_free(bs, service_id, clst) == EOK) { 317 317 /* 318 318 * The cluster is free. Put it into our stack … … 325 325 goto exit_error; 326 326 found++; 327 rc = bitmap_set_cluster(bs, service_id, clst);327 rc = exfat_bitmap_set_cluster(bs, service_id, clst); 328 328 if (rc != EOK) 329 329 goto exit_error; … … 346 346 /* If something wrong - free the clusters */ 347 347 while (found--) { 348 (void) bitmap_clear_cluster(bs, service_id, lifo[found]);348 (void) exfat_bitmap_clear_cluster(bs, service_id, lifo[found]); 349 349 (void) exfat_set_cluster(bs, service_id, lifo[found], 0); 350 350 } … … 378 378 if (rc != EOK) 379 379 return rc; 380 rc = bitmap_clear_cluster(bs, service_id, firstc);380 rc = exfat_bitmap_clear_cluster(bs, service_id, firstc); 381 381 if (rc != EOK) 382 382 return rc; -
uspace/srv/fs/exfat/exfat_ops.c
r6561a8e r98cb0495 405 405 406 406 if (!nodep->fragmented) { 407 rc = bitmap_append_clusters(bs, nodep, clusters);407 rc = exfat_bitmap_append_clusters(bs, nodep, clusters); 408 408 if (rc != ENOSPC) 409 409 return rc; … … 411 411 nodep->fragmented = true; 412 412 nodep->dirty = true; /* need to sync node */ 413 rc = bitmap_replicate_clusters(bs, nodep);413 rc = exfat_bitmap_replicate_clusters(bs, nodep); 414 414 if (rc != EOK) 415 415 return rc; … … 457 457 458 458 clsts = prev_clsts - new_clsts; 459 rc = bitmap_free_clusters(bs, nodep, clsts);459 rc = exfat_bitmap_free_clusters(bs, nodep, clsts); 460 460 if (rc != EOK) 461 461 return rc; … … 704 704 nodep->firstc); 705 705 else 706 rc = bitmap_free_clusters(bs, nodep,706 rc = exfat_bitmap_free_clusters(bs, nodep, 707 707 ROUND_UP(nodep->size, BPC(bs)) / BPC(bs)); 708 708 } … … 758 758 759 759 fibril_mutex_unlock(&parentp->idx->lock); 760 if (rc != EOK)761 return rc;762 763 760 fibril_mutex_lock(&childp->idx->lock); 764 765 761 766 762 childp->idx->pfc = parentp->firstc; … … 1463 1459 } 1464 1460 1465 (void) exfat_node_put(fn); 1461 int rc2 = exfat_node_put(fn); 1462 if (rc == EOK && rc2 != EOK) 1463 rc = rc2; 1464 1466 1465 return rc; 1467 1466 }
Note:
See TracChangeset
for help on using the changeset viewer.
