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#ifndef RAW_OS_H_ 18ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal#define RAW_OS_H_ 19ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 20d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal#include <sys/socket.h> 21d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal#include <sys/types.h> 22ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal#include <time.h> 23ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 24ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal#include "android-base/macros.h" 25ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 26ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal#include "wifilogd/local_utils.h" 27ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 28ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalnamespace android { 29ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalnamespace wifilogd { 30ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 31ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal// Enables interposing on operating system calls. 32ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalclass RawOs { 33ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal public: 34ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal RawOs(); 35ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal virtual ~RawOs(); 36ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 37ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal // See clock_gettime(). 38ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal virtual int ClockGettime(clockid_t clock_id, 39ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal NONNULL struct timespec* tspec) const; 40ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 41a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawal // See android_get_control_socket(). 42a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawal virtual int GetControlSocket(const char* socket_name); 43a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawal 44960c8a88c83c55c21a3286628591a41d2fb42231mukesh agrawal // See nanosleep(). 45960c8a88c83c55c21a3286628591a41d2fb42231mukesh agrawal virtual int Nanosleep(NONNULL const struct timespec* req, 46960c8a88c83c55c21a3286628591a41d2fb42231mukesh agrawal struct timespec* rem); 47960c8a88c83c55c21a3286628591a41d2fb42231mukesh agrawal 48d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal // See recv(). 49d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal virtual ssize_t Recv(int sockfd, void* buf, size_t buflen, int flags); 50d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal 51b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal // See write(). 52b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal virtual ssize_t Write(int fd, const void* buf, size_t buflen); 53b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal 54ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal private: 55ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal DISALLOW_COPY_AND_ASSIGN(RawOs); 56ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal}; 57ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 58ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal} // namespace wifilogd 59ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal} // namespace android 60ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal 61ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal#endif // RAW_OS_H_ 62