2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <dali/internal/system/common/shared-file.h>
28 #include <sys/types.h>
38 SharedFile* SharedFile::New(const char* filename, int size, bool isSystem)
40 SharedFile* sf = NULL;
44 bool opened = sf->OpenFile(filename, size, isSystem);
53 SharedFile::SharedFile()
54 : mFileDescriptor(-1),
61 SharedFile::~SharedFile()
66 void SharedFile::Close()
70 munmap(mAddress, mSize);
74 if(mFileDescriptor >= 0)
76 close(mFileDescriptor);
81 unsigned char* SharedFile::GetAddress()
83 return static_cast<unsigned char*>(mAddress);
86 bool SharedFile::OpenFile(const char* filename, int size, bool isSystem)
92 mode = S_IRUSR | S_IWUSR;
95 mode |= S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
98 mFileDescriptor = Open(filename, size, O_RDONLY, mode);
100 if(mFileDescriptor >= 0)
102 mFilename = filename;
105 mAddress = mmap(NULL, mSize, PROT_READ, MAP_SHARED, mFileDescriptor, 0);
107 // MAP_FAILED is a macro with C cast
108 #pragma GCC diagnostic push
109 #pragma GCC diagnostic ignored "-Wold-style-cast"
110 if(mAddress != MAP_FAILED)
114 #pragma GCC diagnostic pop
119 } // namespace Adaptor
120 } // namespace Internal