1ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal/* 2ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * Copyright (C) 2016 The Android Open Source Project 3ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * 4ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * Licensed under the Apache License, Version 2.0 (the "License"); 5ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * you may not use this file except in compliance with the License. 6ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * You may obtain a copy of the License at 7ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * 8ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * http://www.apache.org/licenses/LICENSE-2.0 9ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * 10ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * Unless required by applicable law or agreed to in writing, software 11ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * distributed under the License is distributed on an "AS IS" BASIS, 12ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * See the License for the specific language governing permissions and 14ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * limitations under the License. 15ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal */ 16ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 17ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal#include <time.h> 18b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal#include <unistd.h> 19ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 20a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawal#include "cutils/sockets.h" 21a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawal 22ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal#include "wifilogd/raw_os.h" 23ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 24ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalnamespace android { 25ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalnamespace wifilogd { 26ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 27ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalRawOs::RawOs() {} 28ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalRawOs::~RawOs() {} 29ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 30ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal// All methods in RawOs should be thin wrappers over library/system calls. 31ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal// In particular, the methods in RawOs should not have any logic in them. 32ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal// Instead, all logic should be placed in Os, so that said logic can be tested. 33ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 34ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalint RawOs::ClockGettime(clockid_t clock_id, struct timespec* ts) const { 35ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal return clock_gettime(clock_id, ts); 36ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal} 37ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 38a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawalint RawOs::GetControlSocket(const char* socket_name) { 39a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawal return android_get_control_socket(socket_name); 40a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawal} 41a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawal 42960c8a88c83c55c21a3286628591a41d2fb42231mukesh agrawalint RawOs::Nanosleep(const struct timespec* req, struct timespec* rem) { 43960c8a88c83c55c21a3286628591a41d2fb42231mukesh agrawal return nanosleep(req, rem); 44960c8a88c83c55c21a3286628591a41d2fb42231mukesh agrawal} 45960c8a88c83c55c21a3286628591a41d2fb42231mukesh agrawal 46d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawalssize_t RawOs::Recv(int sockfd, void* buf, size_t buflen, int flags) { 47d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal return recv(sockfd, buf, buflen, flags); 48d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal} 49d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal 50b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawalssize_t RawOs::Write(int fd, const void* buf, size_t buflen) { 51b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal return write(fd, buf, buflen); 52b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal} 53b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal 54ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal} // namespace wifilogd 55ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal} // namespace android 56