Fix compilation

Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/6e9213fe
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/6e9213fe
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/6e9213fe

Branch: refs/heads/develop
Commit: 6e9213fe1136d369cbbbf141f46895e38441910a
Parents: 1a02962
Author: Fabio Utzig <[email protected]>
Authored: Mon Dec 19 07:46:07 2016 -0200
Committer: Fabio Utzig <[email protected]>
Committed: Thu Jan 12 10:51:46 2017 -0200

----------------------------------------------------------------------
 fs/disk/include/disk/disk.h        |  52 ++++
 fs/disk/pkg.yml                    |  27 +++
 fs/disk/src/disk.c                 |  62 +++++
 fs/fatfs/src/mynewt_glue.c         |   2 +-
 fs/fatfs/src/mynewt_glue_2.c       | 410 --------------------------------
 fs/fs/include/fs/fs_if.h           |   4 +-
 fs/fs/src/fs_file.c                | 118 +++++++--
 fs/fs/src/fs_mount.c               |  13 +-
 fs/nffs/src/nffs.c                 |   2 +-
 hw/drivers/mmc/include/mmc/mmc.h   |  12 +-
 hw/drivers/mmc/src/mmc.c           |  16 +-
 hw/hal/include/hal/hal_flash.h     |   2 +-
 hw/hal/src/hal_flash.c             |  10 +-
 sys/diskio/include/diskio/diskio.h |  51 ----
 sys/diskio/pkg.yml                 |  27 ---
 sys/diskio/src/diskio.c            |  57 -----
 16 files changed, 281 insertions(+), 584 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/fs/disk/include/disk/disk.h
----------------------------------------------------------------------
diff --git a/fs/disk/include/disk/disk.h b/fs/disk/include/disk/disk.h
new file mode 100644
index 0000000..e87fc7b
--- /dev/null
+++ b/fs/disk/include/disk/disk.h
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef __DISK_H__
+#define __DISK_H__
+
+#include <stddef.h>
+#include <inttypes.h>
+#include <os/queue.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define DISK_EOK          0  /* Success */
+#define DISK_EHW          1  /* Error accessing storage medium */
+#define DISK_ENOMEM       2  /* Insufficient memory */
+#define DISK_ENOENT       3  /* No such file or directory */
+#define DISK_EOS          4  /* OS error */
+#define DISK_EUNINIT      5  /* File system not initialized */
+
+struct disk_ops {
+    int (*read)(uint8_t, uint32_t, void *, uint32_t);
+    int (*write)(uint8_t, uint32_t, const void *, uint32_t);
+    int (*ioctl)(uint8_t, uint32_t, void *);
+
+    SLIST_ENTRY(disk_ops) sc_next;
+};
+
+int disk_register(const char *disk_name, const char *fs_name, struct disk_ops 
*dops);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/fs/disk/pkg.yml
----------------------------------------------------------------------
diff --git a/fs/disk/pkg.yml b/fs/disk/pkg.yml
new file mode 100644
index 0000000..61813a7
--- /dev/null
+++ b/fs/disk/pkg.yml
@@ -0,0 +1,27 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+pkg.name: fs/disk
+pkg.description: Disk management layer to glue filesystems to disk devices.
+pkg.author: "Apache Mynewt <[email protected]>"
+pkg.homepage: "http://mynewt.apache.org/";
+pkg.keywords:
+
+pkg.deps:
+    - kernel/os

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/fs/disk/src/disk.c
----------------------------------------------------------------------
diff --git a/fs/disk/src/disk.c b/fs/disk/src/disk.c
new file mode 100644
index 0000000..803e1a5
--- /dev/null
+++ b/fs/disk/src/disk.c
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include <syscfg/syscfg.h>
+#include <fs/fs.h>
+#include <disk/disk.h>
+#include <stdlib.h>
+#include <string.h>
+
+struct disk_info {
+    const char *disk_name;
+    const char *fs_name;
+    struct disk_ops *dops;
+
+    SLIST_ENTRY(disk_info) sc_next;
+};
+
+static SLIST_HEAD(, disk_info) disks = SLIST_HEAD_INITIALIZER();
+
+/**
+ *
+ */
+int disk_register(const char *disk_name, const char *fs_name, struct disk_ops 
*dops)
+{
+    struct disk_info *info = NULL;
+    struct disk_info *sc;
+
+    SLIST_FOREACH(sc, &disks, sc_next) {
+        if (strcmp(sc->disk_name, disk_name) == 0) {
+            return DISK_ENOENT;
+        }
+    }
+
+    info = malloc(sizeof(struct disk_info));
+    if (!info) {
+        return DISK_ENOMEM;
+    }
+
+    info->disk_name = disk_name;
+    info->fs_name = fs_name;
+    info->dops = dops;
+
+    SLIST_INSERT_HEAD(&disks, info, sc_next);
+
+    return 0;
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/fs/fatfs/src/mynewt_glue.c
----------------------------------------------------------------------
diff --git a/fs/fatfs/src/mynewt_glue.c b/fs/fatfs/src/mynewt_glue.c
index f2382f8..f64bbb2 100644
--- a/fs/fatfs/src/mynewt_glue.c
+++ b/fs/fatfs/src/mynewt_glue.c
@@ -38,7 +38,7 @@ static int fatfs_dirent_is_dir(const struct fs_dirent 
*fs_dirent);
  */
 static FILINFO filinfo;
 
-static const struct fs_ops fatfs_ops = {
+static struct fs_ops fatfs_ops = {
     .f_open = fatfs_open,
     .f_close = fatfs_close,
     .f_read = fatfs_read,

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/fs/fatfs/src/mynewt_glue_2.c
----------------------------------------------------------------------
diff --git a/fs/fatfs/src/mynewt_glue_2.c b/fs/fatfs/src/mynewt_glue_2.c
deleted file mode 100644
index 8be7265..0000000
--- a/fs/fatfs/src/mynewt_glue_2.c
+++ /dev/null
@@ -1,410 +0,0 @@
-#include <assert.h>
-#include <sysinit/sysinit.h>
-#include <hal/hal_flash.h>
-#include <flash_map/flash_map.h>
-#include <mmc/mmc.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <fatfs/ff.h>
-#include <fatfs/diskio.h>
-
-#include <fs/fs.h>
-#include <fs/fs_if.h>
-
-static int fatfs_open(const char *path, uint8_t access_flags,
-  struct fs_file **out_file);
-static int fatfs_close(struct fs_file *fs_file);
-static int fatfs_read(struct fs_file *fs_file, uint32_t len, void *out_data,
-  uint32_t *out_len);
-static int fatfs_write(struct fs_file *fs_file, const void *data, int len);
-static int fatfs_seek(struct fs_file *fs_file, uint32_t offset);
-static uint32_t fatfs_getpos(const struct fs_file *fs_file);
-static int fatfs_file_len(const struct fs_file *fs_file, uint32_t *out_len);
-static int fatfs_unlink(const char *path);
-static int fatfs_rename(const char *from, const char *to);
-static int fatfs_mkdir(const char *path);
-static int fatfs_opendir(const char *path, struct fs_dir **out_fs_dir);
-static int fatfs_readdir(struct fs_dir *dir, struct fs_dirent **out_dirent);
-static int fatfs_closedir(struct fs_dir *dir);
-static int fatfs_dirent_name(const struct fs_dirent *fs_dirent, size_t max_len,
-  char *out_name, uint8_t *out_name_len);
-static int fatfs_dirent_is_dir(const struct fs_dirent *fs_dirent);
-
-/* NOTE: to ease memory management of dirent structs, this single static
- * variable holds the latest entry found by readdir. This limits FAT to
- * working on a single thread, single opendir -> closedir cycle.
- */
-static FILINFO filinfo;
-
-static const struct fs_ops fatfs_ops = {
-    .f_open = fatfs_open,
-    .f_close = fatfs_close,
-    .f_read = fatfs_read,
-    .f_write = fatfs_write,
-
-    .f_seek = fatfs_seek,
-    .f_getpos = fatfs_getpos,
-    .f_filelen = fatfs_file_len,
-
-    .f_unlink = fatfs_unlink,
-    .f_rename = fatfs_rename,
-    .f_mkdir = fatfs_mkdir,
-
-    .f_opendir = fatfs_opendir,
-    .f_readdir = fatfs_readdir,
-    .f_closedir = fatfs_closedir,
-
-    .f_dirent_name = fatfs_dirent_name,
-    .f_dirent_is_dir = fatfs_dirent_is_dir,
-
-    .f_name = "fatfs"
-};
-
-int fatfs_to_vfs_error(FRESULT res)
-{
-    int rc = FS_EOS;
-
-    switch (res) {
-    case FR_OK:
-        rc = FS_EOK;
-        break;
-    case FR_DISK_ERR:              /* (1) A hard error occurred in the low 
level disk I/O layer */
-        rc = FS_EHW;
-        break;
-    case FR_INT_ERR:               /* (2) Assertion failed */
-        rc = FS_EOS;
-        break;
-    case FR_NOT_READY:             /* (3) The physical drive cannot work */
-        rc = FS_ECORRUPT;
-        break;
-    case FR_NO_FILE:               /* (4) Could not find the file */
-        /* passthrough */
-    case FR_NO_PATH:               /* (5) Could not find the path */
-        rc = FS_ENOENT;
-        break;
-    case FR_INVALID_NAME:          /* (6) The path name format is invalid */
-        rc = FS_EINVAL;
-        break;
-    case FR_DENIED:                /* (7) Access denied due to prohibited 
access or directory full */
-        rc = FS_EACCESS;
-        break;
-    case FR_EXIST:                 /* (8) Access denied due to prohibited 
access */
-        rc = FS_EEXIST;
-        break;
-    case FR_INVALID_OBJECT:        /* (9) The file/directory object is invalid 
*/
-        rc = FS_EINVAL;
-        break;
-    case FR_WRITE_PROTECTED:       /* (10) The physical drive is write 
protected */
-        /* TODO: assign correct error */
-        break;
-    case FR_INVALID_DRIVE:         /* (11) The logical drive number is invalid 
*/
-        rc = FS_EHW;
-        break;
-    case FR_NOT_ENABLED:           /* (12) The volume has no work area */
-        rc = FS_EUNEXP;
-        break;
-    case FR_NO_FILESYSTEM:         /* (13) There is no valid FAT volume */
-        rc = FS_EUNINIT;
-        break;
-    case FR_MKFS_ABORTED:          /* (14) The f_mkfs() aborted due to any 
problem */
-        /* TODO: assign correct error */
-        break;
-    case FR_TIMEOUT:               /* (15) Could not get a grant to access the 
volume within defined period */
-        /* TODO: assign correct error */
-        break;
-    case FR_LOCKED:                /* (16) The operation is rejected according 
to the file sharing policy */
-        /* TODO: assign correct error */
-        break;
-    case FR_NOT_ENOUGH_CORE:       /* (17) LFN working buffer could not be 
allocated */
-        rc = FS_ENOMEM;
-        break;
-    case FR_TOO_MANY_OPEN_FILES:   /* (18) Number of open files > _FS_LOCK */
-        /* TODO: assign correct error */
-        break;
-    case FR_INVALID_PARAMETER:     /* (19) Given parameter is invalid */
-        rc = FS_EINVAL;
-        break;
-    }
-
-    return rc;
-}
-
-static int
-fatfs_open(const char *path, uint8_t access_flags, struct fs_file 
**out_fs_file)
-{
-    FRESULT res;
-    FIL *out_file;
-    BYTE mode;
-
-    out_file = malloc(sizeof(FIL));
-    if (!out_file) {
-        return FS_ENOMEM;
-    }
-
-    mode = FA_OPEN_EXISTING;
-    if (access_flags & FS_ACCESS_READ) {
-        mode |= FA_READ;
-    }
-    if (access_flags & FS_ACCESS_WRITE) {
-        mode |= FA_WRITE;
-    }
-    if (access_flags & FS_ACCESS_APPEND) {
-        mode |= FA_OPEN_APPEND;
-    }
-    if (access_flags & FS_ACCESS_TRUNCATE) {
-        mode &= ~FA_OPEN_EXISTING;
-        mode |= FA_CREATE_ALWAYS;
-    }
-
-    res = f_open(out_file, path, mode);
-    if (res != FR_OK) {
-        free(out_file);
-        return fatfs_to_vfs_error(res);
-    }
-    *out_fs_file = (struct fs_file *)out_file;
-    return FS_EOK;
-}
-
-static int
-fatfs_close(struct fs_file *fs_file)
-{
-    FRESULT res;
-    FIL *file = (FIL *)fs_file;
-
-    if (file == NULL) {
-        return FS_EOK;
-    }
-
-    res = f_close(file);
-    free(file);
-    return fatfs_to_vfs_error(res);
-}
-
-static int
-fatfs_seek(struct fs_file *fs_file, uint32_t offset)
-{
-    FRESULT res;
-    FIL *file = (FIL *)fs_file;
-
-    res = f_lseek(file, offset);
-    return fatfs_to_vfs_error(res);
-}
-
-static uint32_t
-fatfs_getpos(const struct fs_file *fs_file)
-{
-    uint32_t offset;
-    FIL *file = (FIL *)fs_file;
-
-    offset = (uint32_t) f_tell(file);
-    return offset;
-}
-
-static int
-fatfs_file_len(const struct fs_file *fs_file, uint32_t *out_len)
-{
-    uint32_t offset;
-    FIL *file = (FIL *)fs_file;
-
-    offset = (uint32_t) f_size(file);
-    return offset;
-}
-
-static int
-fatfs_read(struct fs_file *fs_file, uint32_t len, void *out_data,
-           uint32_t *out_len)
-{
-    FRESULT res;
-    FIL *file = (FIL *)fs_file;
-
-    res = f_read(file, out_data, len, (UINT *)out_len);
-    return fatfs_to_vfs_error(res);
-}
-
-static int
-fatfs_write(struct fs_file *fs_file, const void *data, int len)
-{
-    FRESULT res;
-    UINT out_len;
-    FIL *file = (FIL *)fs_file;
-
-    res = f_write(file, data, len, &out_len);
-    if (len != out_len) {
-        return FS_EFULL;
-    }
-    return fatfs_to_vfs_error(res);
-}
-
-static int
-fatfs_unlink(const char *path)
-{
-    FRESULT res;
-
-    res = f_unlink(path);
-    return fatfs_to_vfs_error(res);
-}
-
-static int
-fatfs_rename(const char *from, const char *to)
-{
-    FRESULT res;
-
-    res = f_rename(from, to);
-    return fatfs_to_vfs_error(res);
-}
-
-static int
-fatfs_mkdir(const char *path)
-{
-    FRESULT res;
-
-    res = f_mkdir(path);
-    return fatfs_to_vfs_error(res);
-}
-
-static int
-fatfs_opendir(const char *path, struct fs_dir **out_fs_dir)
-{
-    FRESULT res;
-    FATFS_DIR *out_dir;
-
-    out_dir = malloc(sizeof(FATFS_DIR));
-    if (!out_dir) {
-        return FS_ENOMEM;
-    }
-
-    res = f_opendir(out_dir, path);
-    if (res != FR_OK) {
-        return fatfs_to_vfs_error(res);
-    }
-    *out_fs_dir = (struct fs_dir *)out_dir;
-    return FS_EOK;
-}
-
-static int
-fatfs_readdir(struct fs_dir *fs_dir, struct fs_dirent **out_fs_dirent)
-{
-    FRESULT res;
-    FATFS_DIR *dir = (FATFS_DIR *)fs_dir;
-
-    res = f_readdir(dir, &filinfo);
-    if (res != FR_OK) {
-        return fatfs_to_vfs_error(res);
-    }
-
-    *out_fs_dirent = (struct fs_dirent *)&filinfo;
-    if (!filinfo.fname[0]) {
-        return FS_ENOENT;
-    }
-    return FS_EOK;
-}
-
-static int
-fatfs_closedir(struct fs_dir *fs_dir)
-{
-    FRESULT res;
-    FATFS_DIR *dir = (FATFS_DIR *)fs_dir;
-
-    res = f_closedir(dir);
-    free(dir);
-    return fatfs_to_vfs_error(res);
-}
-
-static int
-fatfs_dirent_name(const struct fs_dirent *fs_dirent, size_t max_len,
-                  char *out_name, uint8_t *out_name_len)
-{
-    const FILINFO *dirent = (const FILINFO *)fs_dirent;
-    size_t out_len;
-
-    assert(dirent != NULL);
-    out_len = max_len < sizeof(dirent->fname) ? max_len : 
sizeof(dirent->fname);
-    memcpy(out_name, dirent->fname, out_len);
-    *out_name_len = out_len;
-    return FS_EOK;
-}
-
-static int
-fatfs_dirent_is_dir(const struct fs_dirent *fs_dirent)
-{
-    const FILINFO *dirent = (const FILINFO *)fs_dirent;
-
-    assert(dirent != NULL);
-    return dirent->fattrib & AM_DIR;
-}
-
-DSTATUS
-disk_initialize(BYTE pdrv)
-{
-    /* Don't need to do anything while using hal_flash */
-    return RES_OK;
-}
-
-DSTATUS
-disk_status(BYTE pdrv)
-{
-    /* Always OK on native emulated flash */
-    return RES_OK;
-}
-
-DRESULT
-disk_read(BYTE pdrv, BYTE* buff, DWORD sector, UINT count)
-{
-    int rc;
-    uint32_t address;
-    uint32_t num_bytes;
-
-    /* NOTE: safe to assume sector size as 512 for now, see ffconf.h */
-    address = (uint32_t) sector * 512;
-    num_bytes = (uint32_t) count * 512;
-    //rc = hal_flash_read(pdrv, address, (void *) buff, num_bytes);
-    rc = mmc_read(pdrv, address, (void *) buff, num_bytes);
-    if (rc < 0) {
-        return STA_NOINIT;
-    }
-
-    return RES_OK;
-}
-
-DRESULT
-disk_write(BYTE pdrv, const BYTE* buff, DWORD sector, UINT count)
-{
-    int rc;
-    uint32_t address;
-    uint32_t num_bytes;
-
-    /* NOTE: safe to assume sector size as 512 for now, see ffconf.h */
-    address = (uint32_t) sector * 512;
-    num_bytes = (uint32_t) count * 512;
-    //rc = hal_flash_write(pdrv, address, (const void *) buff, num_bytes);
-    rc = mmc_write(pdrv, address, (const void *) buff, num_bytes);
-    if (rc < 0) {
-        return STA_NOINIT;
-    }
-
-    return RES_OK;
-}
-
-DRESULT
-disk_ioctl(BYTE pdrv, BYTE cmd, void* buff)
-{
-    return RES_OK;
-}
-
-/* FIXME: _FS_NORTC=1 because there is not hal_rtc interface */
-DWORD
-get_fattime(void)
-{
-    return 0;
-}
-
-void
-fatfs_pkg_init(void)
-{
-    /* Ensure this function only gets called by sysinit. */
-    SYSINIT_ASSERT_ACTIVE();
-
-    fs_register(&fatfs_ops);
-}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/fs/fs/include/fs/fs_if.h
----------------------------------------------------------------------
diff --git a/fs/fs/include/fs/fs_if.h b/fs/fs/include/fs/fs_if.h
index 842f070..015d832 100644
--- a/fs/fs/include/fs/fs_if.h
+++ b/fs/fs/include/fs/fs_if.h
@@ -24,6 +24,8 @@
 extern "C" {
 #endif
 
+#include <os/queue.h>
+
 /*
  * Common interface filesystem(s) provide.
  */
@@ -63,7 +65,7 @@ struct fs_ops {
  *
  * @return 0 on success, non-zero on failure
  */
-int fs_register(const struct fs_ops *fops);
+int fs_register(struct fs_ops *fops);
 
 /**
  * Retrieve a filesystem's operations table

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/fs/fs/src/fs_file.c
----------------------------------------------------------------------
diff --git a/fs/fs/src/fs_file.c b/fs/fs/src/fs_file.c
index fdcecda..a18d0ba 100644
--- a/fs/fs/src/fs_file.c
+++ b/fs/fs/src/fs_file.c
@@ -22,27 +22,113 @@
 #include "fs_priv.h"
 
 static int
-not_initialized(const void *v, ...)
+fake_open(const char *filename, uint8_t access_flags,
+          struct fs_file **out_file)
+{
+    return FS_EUNINIT;
+}
+
+static int
+fake_close(struct fs_file *file)
+{
+    return FS_EUNINIT;
+}
+
+static int
+fake_read(struct fs_file *file, uint32_t len, void *out_data,
+          uint32_t *out_len)
+{
+    return FS_EUNINIT;
+}
+
+static int
+fake_write(struct fs_file *file, const void *data, int len)
+{
+    return FS_EUNINIT;
+}
+
+static int
+fake_seek(struct fs_file *file, uint32_t offset)
+{
+    return FS_EUNINIT;
+}
+
+static uint32_t
+fake_getpos(const struct fs_file *file)
+{
+    return FS_EUNINIT;
+}
+
+static int
+fake_filelen(const struct fs_file *file, uint32_t *out_len)
+{
+    return FS_EUNINIT;
+}
+
+static int
+fake_unlink(const char *filename)
+{
+    return FS_EUNINIT;
+}
+
+static int
+fake_rename(const char *from, const char *to)
+{
+    return FS_EUNINIT;
+}
+
+static int
+fake_mkdir(const char *path)
+{
+    return FS_EUNINIT;
+}
+
+static int
+fake_opendir(const char *path, struct fs_dir **out_dir)
+{
+    return FS_EUNINIT;
+}
+
+static int
+fake_readdir(struct fs_dir *dir, struct fs_dirent **out_dirent)
+{
+    return FS_EUNINIT;
+}
+
+static int
+fake_closedir(struct fs_dir *dir)
+{
+    return FS_EUNINIT;
+}
+
+static int fake_dirent_name(const struct fs_dirent *dirent, size_t max_len,
+                            char *out_name, uint8_t *out_name_len)
+{
+    return FS_EUNINIT;
+}
+
+static int
+fake_dirent_is_dir(const struct fs_dirent *dirent)
 {
     return FS_EUNINIT;
 }
 
 static struct fs_ops not_initialized_ops = {
-    .f_open          = not_initialized,
-    .f_close         = not_initialized,
-    .f_read          = not_initialized,
-    .f_write         = not_initialized,
-    .f_seek          = not_initialized,
-    .f_getpos        = not_initialized,
-    .f_filelen       = not_initialized,
-    .f_unlink        = not_initialized,
-    .f_rename        = not_initialized,
-    .f_mkdir         = not_initialized,
-    .f_opendir       = not_initialized,
-    .f_readdir       = not_initialized,
-    .f_closedir      = not_initialized,
-    .f_dirent_name   = not_initialized,
-    .f_dirent_is_dir = not_initialized,
+    .f_open          = &fake_open,
+    .f_close         = &fake_close,
+    .f_read          = &fake_read,
+    .f_write         = &fake_write,
+    .f_seek          = &fake_seek,
+    .f_getpos        = &fake_getpos,
+    .f_filelen       = &fake_filelen,
+    .f_unlink        = &fake_unlink,
+    .f_rename        = &fake_rename,
+    .f_mkdir         = &fake_mkdir,
+    .f_opendir       = &fake_opendir,
+    .f_readdir       = &fake_readdir,
+    .f_closedir      = &fake_closedir,
+    .f_dirent_name   = &fake_dirent_name,
+    .f_dirent_is_dir = &fake_dirent_is_dir,
     .f_name          = "fakefs",
 };
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/fs/fs/src/fs_mount.c
----------------------------------------------------------------------
diff --git a/fs/fs/src/fs_mount.c b/fs/fs/src/fs_mount.c
index 174fac8..5f020cf 100644
--- a/fs/fs/src/fs_mount.c
+++ b/fs/fs/src/fs_mount.c
@@ -21,13 +21,19 @@
 #include "fs/fs.h"
 #include "fs/fs_if.h"
 #include "fs_priv.h"
+#include <string.h>
 
 static SLIST_HEAD(, fs_ops) root_fops = SLIST_HEAD_INITIALIZER();
-static bool g_cli_initialized = false;
+
+#if MYNEWT_VAL(FS_CLI)
+static int g_cli_initialized = 0;
+#endif
 
 int
-fs_register(const struct fs_ops *fops)
+fs_register(struct fs_ops *fops)
 {
+    struct fs_ops *sc;
+
     SLIST_FOREACH(sc, &root_fops, sc_next) {
         if (strcmp(sc->f_name, fops->f_name) == 0) {
             return FS_EEXIST;
@@ -39,7 +45,7 @@ fs_register(const struct fs_ops *fops)
 #if MYNEWT_VAL(FS_CLI)
     if (!g_cli_initialized) {
         fs_cli_init();
-        g_cli_initialized = true;
+        g_cli_initialized = 1;
     }
 #endif
 
@@ -50,6 +56,7 @@ struct fs_ops *
 fs_ops_for(const char *fs_name)
 {
     struct fs_ops *fops = NULL;
+    struct fs_ops *sc;
 
     SLIST_FOREACH(sc, &root_fops, sc_next) {
         if (strcmp(sc->f_name, fs_name) == 0) {

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/fs/nffs/src/nffs.c
----------------------------------------------------------------------
diff --git a/fs/nffs/src/nffs.c b/fs/nffs/src/nffs.c
index 8f25cb5..eacec07 100644
--- a/fs/nffs/src/nffs.c
+++ b/fs/nffs/src/nffs.c
@@ -81,7 +81,7 @@ static int nffs_dirent_name(const struct fs_dirent 
*fs_dirent, size_t max_len,
   char *out_name, uint8_t *out_name_len);
 static int nffs_dirent_is_dir(const struct fs_dirent *fs_dirent);
 
-static const struct fs_ops nffs_ops = {
+static struct fs_ops nffs_ops = {
     .f_open = nffs_open,
     .f_close = nffs_close,
     .f_read = nffs_read,

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/hw/drivers/mmc/include/mmc/mmc.h
----------------------------------------------------------------------
diff --git a/hw/drivers/mmc/include/mmc/mmc.h b/hw/drivers/mmc/include/mmc/mmc.h
index a13b682..4b14e27 100644
--- a/hw/drivers/mmc/include/mmc/mmc.h
+++ b/hw/drivers/mmc/include/mmc/mmc.h
@@ -21,7 +21,7 @@
 #define __MMC_H__
 
 #include <os/os_dev.h>
-#include <diskio/diskio.h>
+#include <disk/disk.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -69,7 +69,7 @@ mmc_init(int spi_num, void *spi_cfg, int ss_pin);
  * @return 0 on success, non-zero on failure
  */
 int
-mmc_read(uint8_t mmc_id, uint32_t addr, void *buf, size_t len);
+mmc_read(uint8_t mmc_id, uint32_t addr, void *buf, uint32_t len);
 
 /**
  * Write data to the MMC
@@ -82,7 +82,13 @@ mmc_read(uint8_t mmc_id, uint32_t addr, void *buf, size_t 
len);
  * @return 0 on success, non-zero on failure
  */
 int
-mmc_write(uint8_t mmc_id, uint32_t addr, const void *buf, size_t len);
+mmc_write(uint8_t mmc_id, uint32_t addr, const void *buf, uint32_t len);
+
+/**
+ * TODO
+ */
+int
+mmc_ioctl(uint8_t mmc_id, uint32_t cmd, void *arg);
 
 #ifdef __cplusplus
 }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/hw/drivers/mmc/src/mmc.c
----------------------------------------------------------------------
diff --git a/hw/drivers/mmc/src/mmc.c b/hw/drivers/mmc/src/mmc.c
index 0b2aa98..cae8c29 100644
--- a/hw/drivers/mmc/src/mmc.c
+++ b/hw/drivers/mmc/src/mmc.c
@@ -19,9 +19,8 @@
 
 #include <hal/hal_spi.h>
 #include <hal/hal_gpio.h>
-
+#include <disk/disk.h>
 #include <mmc/mmc.h>
-
 #include <stdio.h>
 
 #define MIN(n, m) (((n) < (m)) ? (n) : (m))
@@ -361,7 +360,7 @@ wait_busy(struct mmc_cfg *mmc)
  * @return 0 on success, non-zero on failure
  */
 int
-mmc_read(uint8_t mmc_id, uint32_t addr, void *buf, size_t len)
+mmc_read(uint8_t mmc_id, uint32_t addr, void *buf, uint32_t len)
 {
     uint8_t cmd;
     uint8_t res;
@@ -449,7 +448,7 @@ out:
  * @return 0 on success, non-zero on failure
  */
 int
-mmc_write(uint8_t mmc_id, uint32_t addr, const void *buf, size_t len)
+mmc_write(uint8_t mmc_id, uint32_t addr, const void *buf, uint32_t len)
 {
     uint8_t cmd;
     uint8_t res;
@@ -587,7 +586,8 @@ out:
 /*
  *
  */
-int mmc_ioctl(int cmd, void *arg)
+int
+mmc_ioctl(uint8_t mmc_id, uint32_t cmd, void *arg)
 {
     return 0;
 }
@@ -596,7 +596,7 @@ int mmc_ioctl(int cmd, void *arg)
  *
  */
 struct disk_ops mmc_ops = {
-    .read  = mmc_read,
-    .write = mmc_write,
-    .ioctl = mmc_ioctl,
+    .read  = &mmc_read,
+    .write = &mmc_write,
+    .ioctl = &mmc_ioctl,
 };

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/hw/hal/include/hal/hal_flash.h
----------------------------------------------------------------------
diff --git a/hw/hal/include/hal/hal_flash.h b/hw/hal/include/hal/hal_flash.h
index 1fdc91e..bd4f6f3 100644
--- a/hw/hal/include/hal/hal_flash.h
+++ b/hw/hal/include/hal/hal_flash.h
@@ -25,7 +25,7 @@ extern "C" {
 #endif
 
 #include <inttypes.h>
-#include <diskio/diskio.h>
+#include <disk/disk.h>
 
 extern struct disk_ops hal_flash_ops;
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/hw/hal/src/hal_flash.c
----------------------------------------------------------------------
diff --git a/hw/hal/src/hal_flash.c b/hw/hal/src/hal_flash.c
index a95b57b..ada6e23 100644
--- a/hw/hal/src/hal_flash.c
+++ b/hw/hal/src/hal_flash.c
@@ -24,7 +24,7 @@
 #include "hal/hal_flash.h"
 #include "hal/hal_flash_int.h"
 
-#include <diskio/diskio.h>
+#include <disk/disk.h>
 
 int
 hal_flash_init(void)
@@ -176,8 +176,8 @@ hal_flash_ioctl(uint8_t id, uint32_t cmd, void *args)
     return 0;
 }
 
-static struct disk_ops hal_flash_ops = {
-    .read  = hal_flash_read,
-    .write = hal_flash_write,
-    .ioctl = hal_flash_ioctl,
+struct disk_ops hal_flash_ops = {
+    .read  = &hal_flash_read,
+    .write = &hal_flash_write,
+    .ioctl = &hal_flash_ioctl,
 };

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/sys/diskio/include/diskio/diskio.h
----------------------------------------------------------------------
diff --git a/sys/diskio/include/diskio/diskio.h 
b/sys/diskio/include/diskio/diskio.h
deleted file mode 100644
index a0a68f6..0000000
--- a/sys/diskio/include/diskio/diskio.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef __DISKIO_H__
-#define __DISKIO_H__
-
-#include <stddef.h>
-#include <inttypes.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define DISKIO_EOK          0  /* Success */
-#define DISKIO_EHW          1  /* Error accessing storage medium */
-#define DISKIO_ENOMEM       2  /* Insufficient memory */
-#define DISKIO_ENOENT       3  /* No such file or directory */
-#define DISKIO_EOS          4  /* OS error */
-#define DISKIO_EUNINIT      5  /* File system not initialized */
-
-struct disk_ops {
-    int (*read)(int, uint32_t, void *, uint32_t);
-    int (*write)(int, uint32_t, const void *, uint32_t);
-    int (*ioctl)(int, uint32_t, const void *);
-
-    SLIST_ENTRY(disk_ops) sc_next;
-};
-
-int diskio_register(const char *disk_name, const char *fs_name, struct 
disk_ops *dops);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/sys/diskio/pkg.yml
----------------------------------------------------------------------
diff --git a/sys/diskio/pkg.yml b/sys/diskio/pkg.yml
deleted file mode 100644
index 8981937..0000000
--- a/sys/diskio/pkg.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-# 
-#  http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-pkg.name: sys/diskio
-pkg.description: Disk IO layer to glue filesystems to disk devices.
-pkg.author: "Apache Mynewt <[email protected]>"
-pkg.homepage: "http://mynewt.apache.org/";
-pkg.keywords:
-
-pkg.deps:
-    - kernel/os

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6e9213fe/sys/diskio/src/diskio.c
----------------------------------------------------------------------
diff --git a/sys/diskio/src/diskio.c b/sys/diskio/src/diskio.c
deleted file mode 100644
index e74eae3..0000000
--- a/sys/diskio/src/diskio.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#include "syscfg/syscfg.h"
-#include "fs/fs.h"
-#include <diskio/diskio.h>
-
-static struct disk_info {
-    char *disk_name;
-    char *fs_name;
-    struct disk_ops *dops;
-};
-
-static SLIST_HEAD(, disk_info) disks = SLIST_HEAD_INITIALIZER();
-
-/**
- *
- */
-int diskio_register(const char *disk_name, const char *fs_name, struct 
disk_ops *dops)
-{
-    struct disk_info *info = NULL;
-
-    SLIST_FOREACH(sc, &disks, sc_next) {
-        if (strcmp(sc->disk_name, disk_name) == 0) {
-            return DISKIO_EEXIST;
-        }
-    }
-
-    info = malloc(sizeof(struct disk_info));
-    if (!info) {
-        return DISKIO_ENOMEM;
-    }
-
-    info.disk_name = disk_name;
-    info.fs_name = fs_name;
-    info.dops = dops;
-
-    SLIST_INSERT_HEAD(&disks, info, sc_next);
-
-    return 0;
-}

Reply via email to