Semihosted file handles for targets without DEVICE_SEMIHOST or DEVICE_LOCALFILESYSTEM

Dependents:   SemihostingTest

Committer:
devanlai
Date:
Wed Oct 11 23:14:14 2017 +0000
Revision:
0:d5e731da01f0
Initial Semihosting file I/O shim for devices without DEVICE_SEMIHOST and DEVICE_LOCALFILESYSTEM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
devanlai 0:d5e731da01f0 1 /* mbed Microcontroller Library
devanlai 0:d5e731da01f0 2 * Copyright (c) 2006-2013 ARM Limited
devanlai 0:d5e731da01f0 3 *
devanlai 0:d5e731da01f0 4 * Licensed under the Apache License, Version 2.0 (the "License");
devanlai 0:d5e731da01f0 5 * you may not use this file except in compliance with the License.
devanlai 0:d5e731da01f0 6 * You may obtain a copy of the License at
devanlai 0:d5e731da01f0 7 *
devanlai 0:d5e731da01f0 8 * http://www.apache.org/licenses/LICENSE-2.0
devanlai 0:d5e731da01f0 9 *
devanlai 0:d5e731da01f0 10 * Unless required by applicable law or agreed to in writing, software
devanlai 0:d5e731da01f0 11 * distributed under the License is distributed on an "AS IS" BASIS,
devanlai 0:d5e731da01f0 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
devanlai 0:d5e731da01f0 13 * See the License for the specific language governing permissions and
devanlai 0:d5e731da01f0 14 * limitations under the License.
devanlai 0:d5e731da01f0 15 */
devanlai 0:d5e731da01f0 16 #ifndef SEMIHOSTEDFILESYSTEM_H
devanlai 0:d5e731da01f0 17 #define SEMIHOSTEDFILESYSTEM_H
devanlai 0:d5e731da01f0 18
devanlai 0:d5e731da01f0 19 #include "platform/platform.h"
devanlai 0:d5e731da01f0 20
devanlai 0:d5e731da01f0 21 #include "platform/FileSystemLike.h"
devanlai 0:d5e731da01f0 22 #include "platform/PlatformMutex.h"
devanlai 0:d5e731da01f0 23 #include "platform/NonCopyable.h"
devanlai 0:d5e731da01f0 24
devanlai 0:d5e731da01f0 25 /** \addtogroup platform */
devanlai 0:d5e731da01f0 26 /** @{*/
devanlai 0:d5e731da01f0 27
devanlai 0:d5e731da01f0 28 FILEHANDLE semihosted_file_open(const char* name, int flags);
devanlai 0:d5e731da01f0 29 /** @}*/
devanlai 0:d5e731da01f0 30
devanlai 0:d5e731da01f0 31 /**
devanlai 0:d5e731da01f0 32 * @class SemihostedFileHandle
devanlai 0:d5e731da01f0 33 * @ingroup platform
devanlai 0:d5e731da01f0 34 */
devanlai 0:d5e731da01f0 35 class SemihostedFileHandle : public mbed::FileHandle, private mbed::NonCopyable<SemihostedFileHandle> {
devanlai 0:d5e731da01f0 36
devanlai 0:d5e731da01f0 37 public:
devanlai 0:d5e731da01f0 38 SemihostedFileHandle(FILEHANDLE fh);
devanlai 0:d5e731da01f0 39 SemihostedFileHandle(const char* name, int flags);
devanlai 0:d5e731da01f0 40
devanlai 0:d5e731da01f0 41 virtual int close();
devanlai 0:d5e731da01f0 42
devanlai 0:d5e731da01f0 43 virtual ssize_t write(const void *buffer, size_t length);
devanlai 0:d5e731da01f0 44
devanlai 0:d5e731da01f0 45 virtual ssize_t read(void *buffer, size_t length);
devanlai 0:d5e731da01f0 46
devanlai 0:d5e731da01f0 47 virtual int isatty();
devanlai 0:d5e731da01f0 48
devanlai 0:d5e731da01f0 49 virtual off_t seek(off_t position, int whence);
devanlai 0:d5e731da01f0 50
devanlai 0:d5e731da01f0 51 virtual int sync();
devanlai 0:d5e731da01f0 52
devanlai 0:d5e731da01f0 53 virtual off_t size();
devanlai 0:d5e731da01f0 54
devanlai 0:d5e731da01f0 55 int printf(const char *format, ...);
devanlai 0:d5e731da01f0 56
devanlai 0:d5e731da01f0 57 protected:
devanlai 0:d5e731da01f0 58 virtual void lock();
devanlai 0:d5e731da01f0 59 virtual void unlock();
devanlai 0:d5e731da01f0 60 FILEHANDLE _fh;
devanlai 0:d5e731da01f0 61 int pos;
devanlai 0:d5e731da01f0 62 PlatformMutex _mutex;
devanlai 0:d5e731da01f0 63 };
devanlai 0:d5e731da01f0 64
devanlai 0:d5e731da01f0 65 #endif