version 4.5.0
PIThread::stopAndWait now returns bool PIKbdListener on Linux now use piwaitevent_p and can immediately stop new base method piZeroMemory, also migrate all "memset 0" to piZeroMemory
This commit is contained in:
@@ -793,7 +793,7 @@ bool PITerminal::initialize() {
|
||||
// SetHandleInformation(PRIVATE->pipe_in[1], HANDLE_FLAG_INHERIT, 0);
|
||||
// SetHandleInformation(PRIVATE->hConBuf, HANDLE_FLAG_INHERIT, 0);
|
||||
// GetStartupInfoA(&PRIVATE->si);
|
||||
memset(&PRIVATE->si, 0, sizeof(PRIVATE->si));
|
||||
piZeroMemory(PRIVATE->si);
|
||||
PRIVATE->si.cb = sizeof(STARTUPINFO);
|
||||
// PRIVATE->si.dwFlags |= STARTF_USESTDHANDLES;
|
||||
PRIVATE->si.dwFlags |= STARTF_USESHOWWINDOW;
|
||||
@@ -805,7 +805,7 @@ bool PITerminal::initialize() {
|
||||
PRIVATE->si.dwXCountChars = 80;
|
||||
PRIVATE->si.dwYCountChars = 24;
|
||||
|
||||
memset(&PRIVATE->pi, 0, sizeof(PRIVATE->pi));
|
||||
piZeroMemory(PRIVATE->pi);
|
||||
|
||||
PIString shmh = PIString::fromNumber(randomi() % 10000);
|
||||
PIString pname = "\\\\.\\pipe\\piterm" + shmh;
|
||||
@@ -857,7 +857,7 @@ bool PITerminal::initialize() {
|
||||
# else
|
||||
# ifdef HAS_FORKPTY
|
||||
char pty[256];
|
||||
memset(pty, 0, 256);
|
||||
piZeroMemory(pty, 256);
|
||||
winsize ws;
|
||||
ws.ws_col = dsize_x;
|
||||
ws.ws_row = dsize_y;
|
||||
|
||||
@@ -143,7 +143,7 @@ void log_callback(void * cls, const char * fmt, va_list ap) {
|
||||
piCout << "log" << server;
|
||||
if (!server) return;
|
||||
char buffer[1_KiB];
|
||||
memset(buffer, 0, 1_KiB);
|
||||
piZeroMemory(buffer, 1_KiB);
|
||||
std::vsnprintf(buffer, 1_KiB, fmt, ap);
|
||||
piCout << buffer;
|
||||
}
|
||||
@@ -312,7 +312,7 @@ bool MicrohttpdServer::listen(PINetworkAddress addr) {
|
||||
key_pass = opts.value(Option::HTTPSKeyPassword).toByteArray();
|
||||
if (key_pass.isNotEmpty()) key_pass.append(0);
|
||||
sockaddr_in sa_addr;
|
||||
memset(&sa_addr, 0, sizeof(sa_addr));
|
||||
piZeroMemory(sa_addr);
|
||||
sa_addr.sin_port = htons(addr.port());
|
||||
sa_addr.sin_addr.s_addr = addr.ip();
|
||||
sa_addr.sin_family = AF_INET;
|
||||
|
||||
@@ -405,7 +405,7 @@ float PISystemMonitor::calcThreadUsage(PISystemTime & t_new, PISystemTime & t_ol
|
||||
ullong PISystemMonitor::totalRAM() {
|
||||
#ifdef ESP_PLATFORM
|
||||
multi_heap_info_t heap_info;
|
||||
memset(&heap_info, 0, sizeof(multi_heap_info_t));
|
||||
piZeroMemory(heap_info);
|
||||
heap_caps_get_info(&heap_info, MALLOC_CAP_8BIT);
|
||||
return heap_info.total_allocated_bytes + heap_info.total_free_bytes;
|
||||
#endif
|
||||
@@ -416,7 +416,7 @@ ullong PISystemMonitor::totalRAM() {
|
||||
ullong PISystemMonitor::freeRAM() {
|
||||
#ifdef ESP_PLATFORM
|
||||
multi_heap_info_t heap_info;
|
||||
memset(&heap_info, 0, sizeof(multi_heap_info_t));
|
||||
piZeroMemory(heap_info);
|
||||
heap_caps_get_info(&heap_info, MALLOC_CAP_8BIT);
|
||||
return heap_info.total_free_bytes;
|
||||
#endif
|
||||
@@ -427,7 +427,7 @@ ullong PISystemMonitor::freeRAM() {
|
||||
ullong PISystemMonitor::usedRAM() {
|
||||
#ifdef ESP_PLATFORM
|
||||
multi_heap_info_t heap_info;
|
||||
memset(&heap_info, 0, sizeof(multi_heap_info_t));
|
||||
piZeroMemory(heap_info);
|
||||
heap_caps_get_info(&heap_info, MALLOC_CAP_8BIT);
|
||||
return heap_info.total_allocated_bytes;
|
||||
#endif
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "piincludes_p.h"
|
||||
#include "piliterals.h"
|
||||
#include "piwaitevent_p.h"
|
||||
#ifndef WINDOWS
|
||||
# include <termios.h>
|
||||
#else
|
||||
@@ -144,6 +145,7 @@ PRIVATE_DEFINITION_START(PIKbdListener)
|
||||
int
|
||||
#endif
|
||||
ret;
|
||||
PIWaitEvent event;
|
||||
PRIVATE_DEFINITION_END(PIKbdListener)
|
||||
|
||||
|
||||
@@ -157,11 +159,11 @@ PIKbdListener::PIKbdListener(KBFunc slot, void * _d, bool startNow): PIThread()
|
||||
#else
|
||||
tcgetattr(0, &PRIVATE->sterm);
|
||||
#endif
|
||||
is_active = true;
|
||||
ret_func = slot;
|
||||
kbddata_ = _d;
|
||||
dbl_interval = 400;
|
||||
PIKbdListener::exiting = exit_enabled = false;
|
||||
ret_func = slot;
|
||||
kbddata_ = _d;
|
||||
dbl_interval = 400;
|
||||
PRIVATE->event.create();
|
||||
PIKbdListener::exiting = false;
|
||||
if (startNow) start();
|
||||
}
|
||||
|
||||
@@ -169,7 +171,7 @@ PIKbdListener::PIKbdListener(KBFunc slot, void * _d, bool startNow): PIThread()
|
||||
PIKbdListener::~PIKbdListener() {
|
||||
stop();
|
||||
if (!waitForFinish(100_ms)) terminate();
|
||||
end();
|
||||
PRIVATE->event.destroy();
|
||||
}
|
||||
|
||||
|
||||
@@ -216,7 +218,8 @@ PIKbdListener::MouseButtons getButtons(DWORD v) {
|
||||
void PIKbdListener::readKeyboard() {
|
||||
ke.key = 0;
|
||||
ke.modifiers = 0;
|
||||
memset(rc, 0, 8);
|
||||
char rc[8];
|
||||
piZeroMemory(rc, 8);
|
||||
#ifdef WINDOWS
|
||||
INPUT_RECORD ir;
|
||||
ReadConsoleInput(PRIVATE->hIn, &ir, 1, &(PRIVATE->ret));
|
||||
@@ -403,6 +406,7 @@ void PIKbdListener::readKeyboard() {
|
||||
}
|
||||
#else
|
||||
tcsetattr(0, TCSANOW, &PRIVATE->tterm);
|
||||
if (!PRIVATE->event.wait(0)) return;
|
||||
PRIVATE->ret = read(0, rc, 8);
|
||||
/*piCout << "key" << PIString(rc).replaceAll("\e", "\\e");
|
||||
for (int i = 0; i < PRIVATE->ret; ++i)
|
||||
@@ -542,6 +546,13 @@ void PIKbdListener::readKeyboard() {
|
||||
|
||||
void PIKbdListener::stop() {
|
||||
PIThread::stop();
|
||||
PRIVATE->event.interrupt();
|
||||
}
|
||||
|
||||
|
||||
bool PIKbdListener::stopAndWait(PISystemTime timeout) {
|
||||
stop();
|
||||
return waitForFinish(timeout);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -29,15 +29,11 @@
|
||||
#include "pithread.h"
|
||||
#include "pitime.h"
|
||||
|
||||
#define WAIT_FOR_EXIT \
|
||||
while (!PIKbdListener::exiting) \
|
||||
piMSleep(PIP_MIN_MSLEEP * 5); \
|
||||
if (PIKbdListener::instance()) { \
|
||||
PIKbdListener::instance()->stop(); \
|
||||
if (!PIKbdListener::instance()->waitForFinish(PISystemTime::fromMilliseconds(100))) { \
|
||||
PIKbdListener::instance()->setDebug(false); \
|
||||
PIKbdListener::instance()->terminate(); \
|
||||
} \
|
||||
#define WAIT_FOR_EXIT \
|
||||
while (!PIKbdListener::exiting) \
|
||||
piMSleep(PIP_MIN_MSLEEP * 5); \
|
||||
if (PIKbdListener::instance()) { \
|
||||
if (!PIKbdListener::instance()->stopAndWait(PISystemTime::fromSeconds(1))) PIKbdListener::instance()->terminate(); \
|
||||
}
|
||||
|
||||
|
||||
@@ -188,6 +184,8 @@ public:
|
||||
|
||||
void stop();
|
||||
|
||||
bool stopAndWait(PISystemTime timeout = {});
|
||||
|
||||
//! Returns if keyboard listening is active (not running!)
|
||||
bool isActive() { return is_active; }
|
||||
|
||||
@@ -258,9 +256,8 @@ private:
|
||||
PRIVATE_DECLARATION(PIP_EXPORT)
|
||||
KBFunc ret_func;
|
||||
int exit_key;
|
||||
bool exit_enabled, is_active;
|
||||
bool exit_enabled = false, is_active = true;
|
||||
void * kbddata_;
|
||||
char rc[8];
|
||||
double dbl_interval;
|
||||
PITimeMeasurer tm_dbl;
|
||||
KeyEvent ke;
|
||||
|
||||
@@ -558,6 +558,23 @@ inline uint piHash(const ldouble & v) {
|
||||
return piHashData((const uchar *)&v, sizeof(v));
|
||||
}
|
||||
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Zero "size" bytes by address "ptr".
|
||||
//! \~russian Зануляет "size" байт по адресу "ptr".
|
||||
inline void piZeroMemory(void * ptr, size_t size) {
|
||||
memset(ptr, 0, size);
|
||||
}
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Zero variable "v" memory.
|
||||
//! \~russian Зануляет память переменной "v".
|
||||
template<typename T>
|
||||
inline void piZeroMemory(T & v) {
|
||||
piZeroMemory(&v, sizeof(v));
|
||||
}
|
||||
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Call \b delete on each "container" element.
|
||||
//! \~russian Вызывает \b delete на каждый элемент "container".
|
||||
|
||||
@@ -167,7 +167,7 @@ PIInit::PIInit() {
|
||||
for (l = 0; l < MAX_PATH; ++l)
|
||||
if (cpinfo.CodePageName[l] == '\0' || cpinfo.CodePageName[l] == ' ') break;
|
||||
__sysoemname__ = new char[256];
|
||||
memset(__sysoemname__, 0, 256);
|
||||
piZeroMemory(__sysoemname__, 256);
|
||||
memcpy(__sysoemname__, "ibm-", 4);
|
||||
memcpy(&(__sysoemname__[4]), cpinfo.CodePageName, l);
|
||||
# else
|
||||
@@ -190,7 +190,7 @@ PIInit::PIInit() {
|
||||
host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &__pi_mac_clock);
|
||||
# endif
|
||||
char cbuff[1024];
|
||||
memset(cbuff, 0, 1024);
|
||||
piZeroMemory(cbuff, 1024);
|
||||
if (gethostname(cbuff, 1023) == 0) {
|
||||
sinfo->hostname = cbuff;
|
||||
}
|
||||
@@ -210,7 +210,7 @@ PIInit::PIInit() {
|
||||
wchar_t ** argv_ = CommandLineToArgvW(GetCommandLineW(), &argc_);
|
||||
if (argc_ > 0 && argv_ != 0) sinfo->execCommand = argv_[0];
|
||||
LocalFree(argv_);
|
||||
memset(cbuff, 0, 1024);
|
||||
piZeroMemory(cbuff, 1024);
|
||||
ulong unlen = 1023;
|
||||
if (GetUserNameA(cbuff, &unlen) != 0) sinfo->user = cbuff;
|
||||
# else // WINDOWS
|
||||
@@ -219,7 +219,7 @@ PIInit::PIInit() {
|
||||
if (ps)
|
||||
sinfo->user = ps->pw_name;
|
||||
else {
|
||||
memset(cbuff, 0, 1024);
|
||||
piZeroMemory(cbuff, 1024);
|
||||
char * l = getlogin();
|
||||
if (l) sinfo->user = l;
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ void PIWaitEvent::create() {
|
||||
}
|
||||
#else
|
||||
for (int i = 0; i < 3; ++i)
|
||||
memset(&(fds[i]), 0, sizeof(fds[i]));
|
||||
piZeroMemory(fds[i]);
|
||||
if (::pipe(pipe_fd) < 0) {
|
||||
piCout << "Error with pipe:" << errorString();
|
||||
} else {
|
||||
|
||||
@@ -326,7 +326,7 @@ PIVector<PIFile::FileInfo> PIDir::entries() {
|
||||
}
|
||||
} else {
|
||||
WIN32_FIND_DATAA fd;
|
||||
memset(&fd, 0, sizeof(fd));
|
||||
piZeroMemory(fd);
|
||||
p += "\\*";
|
||||
void * hf = FindFirstFileA((LPCSTR)(p.data()), &fd);
|
||||
if (!hf) return l;
|
||||
@@ -335,7 +335,7 @@ PIVector<PIFile::FileInfo> PIDir::entries() {
|
||||
PIString fn(fd.cFileName);
|
||||
if (fn == "..") hdd = true;
|
||||
l << PIFile::fileInfo(dp + fn);
|
||||
memset(&fd, 0, sizeof(fd));
|
||||
piZeroMemory(fd);
|
||||
} while (FindNextFileA(hf, &fd) != 0);
|
||||
FindClose(hf);
|
||||
l.sort(sort_compare);
|
||||
@@ -440,7 +440,7 @@ PIDir PIDir::current() {
|
||||
char rc[1024];
|
||||
#endif
|
||||
#ifdef WINDOWS
|
||||
memset(rc, 0, 1024);
|
||||
piZeroMemory(rc, 1024);
|
||||
if (GetCurrentDirectory(1024, (LPTSTR)rc) == 0) return PIString();
|
||||
PIString ret(rc);
|
||||
ret.replaceAll("\\", PIDir::separator);
|
||||
@@ -463,13 +463,13 @@ PIDir PIDir::home() {
|
||||
#endif
|
||||
#ifdef WINDOWS
|
||||
rc = new char[1024];
|
||||
memset(rc, 0, 1024);
|
||||
piZeroMemory(rc, 1024);
|
||||
if (ExpandEnvironmentStrings((LPCTSTR) "%HOMEPATH%", (LPTSTR)rc, 1024) == 0) {
|
||||
delete[] rc;
|
||||
return PIDir();
|
||||
}
|
||||
PIString hp(rc);
|
||||
memset(rc, 0, 1024);
|
||||
piZeroMemory(rc, 1024);
|
||||
if (ExpandEnvironmentStrings((LPCTSTR) "%HOMEDRIVE%", (LPTSTR)rc, 1024) == 0) {
|
||||
delete[] rc;
|
||||
return PIDir();
|
||||
@@ -495,7 +495,7 @@ PIDir PIDir::temporary() {
|
||||
char * rc = nullptr;
|
||||
#ifdef WINDOWS
|
||||
rc = new char[1024];
|
||||
memset(rc, 0, 1024);
|
||||
piZeroMemory(rc, 1024);
|
||||
int ret = GetTempPath(1024, (LPTSTR)rc);
|
||||
if (ret == 0) {
|
||||
delete[] rc;
|
||||
|
||||
@@ -272,7 +272,7 @@ bool PIEthernet::openDevice() {
|
||||
// if (type() == TCP_Client)
|
||||
// connecting_ = true;
|
||||
if (type() != UDP || mode() == PIIODevice::WriteOnly) return true;
|
||||
memset(&PRIVATE->addr_, 0, sizeof(PRIVATE->addr_));
|
||||
piZeroMemory(PRIVATE->addr_);
|
||||
PRIVATE->addr_.sin_family = AF_INET;
|
||||
PRIVATE->addr_.sin_port = htons(addr_r.port());
|
||||
if (params[PIEthernet::Broadcast])
|
||||
@@ -377,7 +377,7 @@ bool PIEthernet::joinMulticastGroup(const PIString & group) {
|
||||
#else
|
||||
struct ip_mreq mreq;
|
||||
#endif
|
||||
memset(&mreq, 0, sizeof(mreq));
|
||||
piZeroMemory(mreq);
|
||||
#ifdef LINUX
|
||||
// mreq.imr_address.s_addr = INADDR_ANY;
|
||||
/*PIEthernet::InterfaceList il = interfaces();
|
||||
@@ -423,7 +423,7 @@ bool PIEthernet::leaveMulticastGroup(const PIString & group) {
|
||||
#else
|
||||
struct ip_mreq mreq;
|
||||
#endif
|
||||
memset(&mreq, 0, sizeof(mreq));
|
||||
piZeroMemory(mreq);
|
||||
if (params[PIEthernet::Broadcast])
|
||||
#ifndef LWIP
|
||||
mreq.imr_address.s_addr = INADDR_ANY;
|
||||
@@ -454,7 +454,7 @@ bool PIEthernet::connect(bool threaded) {
|
||||
if (connected_) return false;
|
||||
if (sock == -1) init();
|
||||
if (sock == -1) return false;
|
||||
memset(&PRIVATE->addr_, 0, sizeof(PRIVATE->addr_));
|
||||
piZeroMemory(PRIVATE->addr_);
|
||||
addr_r.set(path());
|
||||
PRIVATE->addr_.sin_port = htons(addr_r.port());
|
||||
PRIVATE->addr_.sin_addr.s_addr = addr_r.ip();
|
||||
@@ -492,7 +492,7 @@ bool PIEthernet::listen(bool threaded) {
|
||||
}
|
||||
listen_threaded = server_bounded = false;
|
||||
addr_r.set(path());
|
||||
memset(&PRIVATE->addr_, 0, sizeof(PRIVATE->addr_));
|
||||
piZeroMemory(PRIVATE->addr_);
|
||||
PRIVATE->addr_.sin_port = htons(addr_r.port());
|
||||
PRIVATE->addr_.sin_addr.s_addr = addr_r.ip();
|
||||
PRIVATE->addr_.sin_family = AF_INET;
|
||||
@@ -618,7 +618,7 @@ ssize_t PIEthernet::readDevice(void * read_to, ssize_t max_size) {
|
||||
case TCP_Client:
|
||||
if (connecting_) {
|
||||
addr_r.set(path());
|
||||
memset(&PRIVATE->addr_, 0, sizeof(PRIVATE->addr_));
|
||||
piZeroMemory(PRIVATE->addr_);
|
||||
PRIVATE->addr_.sin_port = htons(addr_r.port());
|
||||
PRIVATE->addr_.sin_addr.s_addr = addr_r.ip();
|
||||
PRIVATE->addr_.sin_family = AF_INET;
|
||||
@@ -704,7 +704,7 @@ ssize_t PIEthernet::readDevice(void * read_to, ssize_t max_size) {
|
||||
if (rs > 0) received(read_to, rs);
|
||||
return rs;
|
||||
case UDP: {
|
||||
memset(&PRIVATE->raddr_, 0, sizeof(PRIVATE->raddr_));
|
||||
piZeroMemory(PRIVATE->raddr_);
|
||||
// piCoutObj << "read from" << path() << "...";
|
||||
#ifdef WINDOWS
|
||||
long wr = waitForEvent(PRIVATE->event, FD_READ | FD_CLOSE);
|
||||
@@ -765,7 +765,7 @@ ssize_t PIEthernet::writeDevice(const void * data, ssize_t max_size) {
|
||||
// piCout << "[PIEth] write to" << ip_s << ":" << port_s << "ok";
|
||||
case TCP_Client: {
|
||||
if (connecting_) {
|
||||
memset(&PRIVATE->addr_, 0, sizeof(PRIVATE->addr_));
|
||||
piZeroMemory(PRIVATE->addr_);
|
||||
addr_r.set(path());
|
||||
PRIVATE->addr_.sin_port = htons(addr_r.port());
|
||||
PRIVATE->addr_.sin_addr.s_addr = addr_r.ip();
|
||||
@@ -962,7 +962,7 @@ long PIEthernet::waitForEvent(PIWaitEvent & event, long mask) {
|
||||
// DWORD wr = WSAWaitForMultipleEvents(1, &(PRIVATE->read_event), FALSE, WSA_INFINITE, TRUE);
|
||||
// if (wr == WSA_WAIT_EVENT_0) {
|
||||
WSANETWORKEVENTS events;
|
||||
memset(&events, 0, sizeof(events));
|
||||
piZeroMemory(events);
|
||||
WSAEnumNetworkEvents(sock, event.getEvent(), &events);
|
||||
// piCoutObj << "wait result" << events.lNetworkEvents;
|
||||
return events.lNetworkEvents;
|
||||
@@ -1245,7 +1245,7 @@ PINetworkAddress PIEthernet::interfaceAddress(const PIString & interface_) {
|
||||
return PINetworkAddress();
|
||||
#else
|
||||
struct ifreq ifr;
|
||||
memset(&ifr, 0, sizeof(ifr));
|
||||
piZeroMemory(ifr);
|
||||
strcpy(ifr.ifr_name, interface_.dataAscii());
|
||||
int s = ::socket(AF_INET, SOCK_DGRAM, 0);
|
||||
ioctl(s, SIOCGIFADDR, &ifr);
|
||||
|
||||
@@ -492,7 +492,7 @@ PIFile::FileInfo PIFile::fileInfo(const PIString & path) {
|
||||
}
|
||||
if (!hFile) return ret;
|
||||
BY_HANDLE_FILE_INFORMATION fi;
|
||||
memset(&fi, 0, sizeof(fi));
|
||||
piZeroMemory(fi);
|
||||
if (GetFileInformationByHandle(hFile, &fi) != 0) {
|
||||
LARGE_INTEGER filesize;
|
||||
filesize.LowPart = filesize.HighPart = 0;
|
||||
@@ -515,7 +515,7 @@ PIFile::FileInfo PIFile::fileInfo(const PIString & path) {
|
||||
CloseHandle(hFile);
|
||||
#else
|
||||
_stat_struct_ fs;
|
||||
memset(&fs, 0, sizeof(fs));
|
||||
piZeroMemory(fs);
|
||||
_stat_call_(path.data(), &fs);
|
||||
int mode = fs.st_mode;
|
||||
ret.size = fs.st_size;
|
||||
@@ -544,7 +544,7 @@ PIFile::FileInfo PIFile::fileInfo(const PIString & path) {
|
||||
ret.perm_user = FileInfo::Permissions((mode & S_IRUSR) == S_IRUSR, (mode & S_IWUSR) == S_IWUSR, (mode & S_IXUSR) == S_IXUSR);
|
||||
ret.perm_group = FileInfo::Permissions((mode & S_IRGRP) == S_IRGRP, (mode & S_IWGRP) == S_IWGRP, (mode & S_IXGRP) == S_IXGRP);
|
||||
ret.perm_other = FileInfo::Permissions((mode & S_IROTH) == S_IROTH, (mode & S_IWOTH) == S_IWOTH, (mode & S_IXOTH) == S_IXOTH);
|
||||
memset(&fs, 0, sizeof(fs));
|
||||
piZeroMemory(fs);
|
||||
_stat_link_(path.data(), &fs);
|
||||
mode &= ~S_IFLNK;
|
||||
mode |= S_IFLNK & fs.st_mode;
|
||||
|
||||
@@ -877,7 +877,7 @@ ssize_t PISerial::readDevice(void * read_to, ssize_t max_size) {
|
||||
close();
|
||||
return 0;
|
||||
}
|
||||
memset(&(PRIVATE->overlap), 0, sizeof(PRIVATE->overlap));
|
||||
piZeroMemory(PRIVATE->overlap);
|
||||
PRIVATE->overlap.hEvent = PRIVATE->event.getEvent();
|
||||
PRIVATE->readed = 0;
|
||||
ReadFile(PRIVATE->hCom, read_to, max_size, NULL, &(PRIVATE->overlap));
|
||||
@@ -924,7 +924,7 @@ ssize_t PISerial::writeDevice(const void * data, ssize_t max_size) {
|
||||
DWORD wrote(0);
|
||||
// piCoutObj << "send ..." << max_size;// << ": " << PIString((char*)data, max_size);
|
||||
sending = true;
|
||||
memset(&(PRIVATE->overlap_write), 0, sizeof(PRIVATE->overlap_write));
|
||||
piZeroMemory(PRIVATE->overlap_write);
|
||||
PRIVATE->overlap_write.hEvent = PRIVATE->event_write.getEvent();
|
||||
WriteFile(PRIVATE->hCom, data, max_size, NULL, &(PRIVATE->overlap_write));
|
||||
if (PRIVATE->event_write.wait()) {
|
||||
@@ -1160,7 +1160,7 @@ PIVector<PISerial::DeviceInfo> PISerial::availableDevicesInfo(bool test) {
|
||||
const HDEVINFO dis = SetupDiGetClassDevs(&(guids[i]), NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
|
||||
if (dis == INVALID_HANDLE_VALUE) continue;
|
||||
SP_DEVINFO_DATA did;
|
||||
memset(&did, 0, sizeof(did));
|
||||
piZeroMemory(did);
|
||||
did.cbSize = sizeof(did);
|
||||
DWORD index = 0;
|
||||
while (SetupDiEnumDeviceInfo(dis, index++, &did)) {
|
||||
|
||||
@@ -177,7 +177,7 @@ void PIProcess::startProc(bool detached) {
|
||||
# endif
|
||||
# ifdef WINDOWS
|
||||
GetStartupInfoA(&(PRIVATE->si));
|
||||
memset(&(PRIVATE->pi), 0, sizeof(PRIVATE->pi));
|
||||
piZeroMemory(PRIVATE->pi);
|
||||
if (CreateProcessA(0, // No module name (use command line)
|
||||
a, // Command line
|
||||
0, // Process handle not inheritable
|
||||
|
||||
@@ -54,7 +54,7 @@ PIStringList PISystemInfo::mountRoots() {
|
||||
# ifdef LINUX
|
||||
PIString s_df, s_m;
|
||||
char in[1024];
|
||||
memset(in, 0, 1024);
|
||||
piZeroMemory(in, 1024);
|
||||
FILE * fp = popen("mount -l", "r");
|
||||
PIStringList tl;
|
||||
if (fp) {
|
||||
@@ -129,7 +129,7 @@ PIVector<PISystemInfo::MountInfo> PISystemInfo::mountInfo(bool ignore_cache) {
|
||||
#ifdef LINUX
|
||||
PIString s_df, s_m;
|
||||
char in[1024];
|
||||
memset(in, 0, 1024);
|
||||
piZeroMemory(in, 1024);
|
||||
// piCout << "mountInfo 0";
|
||||
FILE * fp = popen("df -B1", "r");
|
||||
PIStringList l_df;
|
||||
@@ -141,7 +141,7 @@ PIVector<PISystemInfo::MountInfo> PISystemInfo::mountInfo(bool ignore_cache) {
|
||||
fp = 0;
|
||||
}
|
||||
// piCout << "mountInfo 1";
|
||||
memset(in, 0, 1024);
|
||||
piZeroMemory(in, 1024);
|
||||
fp = popen("mount -l", "r");
|
||||
PIStringList tl;
|
||||
if (fp) {
|
||||
|
||||
@@ -73,7 +73,7 @@ ushort charFromCodepage(const char * c, int size, const char * codepage, int * t
|
||||
return buffer;
|
||||
# else
|
||||
mbstate_t state;
|
||||
memset(&state, 0, sizeof(state));
|
||||
piZeroMemory(state);
|
||||
wchar_t wc;
|
||||
ret = mbrtowc(&wc, c, size, &state);
|
||||
// printf("mbtowc = %d\n", ret);
|
||||
@@ -369,7 +369,7 @@ PICout operator<<(PICout s, const PIChar & v) {
|
||||
UConverter * cc = ucnv_open(__syslocname__, &e);
|
||||
if (cc) {
|
||||
char uc[8];
|
||||
memset(uc, 0, 8);
|
||||
piZeroMemory(uc, 8);
|
||||
e = (UErrorCode)0;
|
||||
ucnv_fromUChars(cc, uc, 8, (const UChar *)(&v.ch), 1, &e);
|
||||
ucnv_close(cc);
|
||||
|
||||
@@ -178,7 +178,7 @@ T toDecimal(const PIString & s) {
|
||||
|
||||
#define pisprintf(f, v) \
|
||||
char ch[256]; \
|
||||
memset(ch, 0, 256); \
|
||||
piZeroMemory(ch, 256); \
|
||||
snprintf(ch, 256, f, v); \
|
||||
return PIStringAscii(ch);
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ PIConditionVariable::PIConditionVariable() {
|
||||
# if !defined(MAC_OS)
|
||||
pthread_condattr_setclock(&condattr, CLOCK_MONOTONIC);
|
||||
# endif
|
||||
memset(&(PRIVATE->nativeHandle), 0, sizeof(PRIVATE->nativeHandle));
|
||||
piZeroMemory(PRIVATE->nativeHandle);
|
||||
pthread_cond_init(&PRIVATE->nativeHandle, &condattr);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -209,10 +209,10 @@ void PIMutex::init() {
|
||||
PRIVATE->mutex = xSemaphoreCreateMutex();
|
||||
#else
|
||||
pthread_mutexattr_t attr;
|
||||
memset(&attr, 0, sizeof(attr));
|
||||
piZeroMemory(attr);
|
||||
pthread_mutexattr_init(&attr);
|
||||
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
|
||||
memset(&(PRIVATE->mutex), 0, sizeof(PRIVATE->mutex));
|
||||
piZeroMemory(PRIVATE->mutex);
|
||||
pthread_mutex_init(&(PRIVATE->mutex), &attr);
|
||||
pthread_mutexattr_destroy(&attr);
|
||||
#endif
|
||||
|
||||
@@ -651,9 +651,9 @@ bool PIThread::startOnce(std::function<void()> func) {
|
||||
}
|
||||
|
||||
|
||||
void PIThread::stopAndWait(PISystemTime timeout) {
|
||||
bool PIThread::stopAndWait(PISystemTime timeout) {
|
||||
stop();
|
||||
waitForFinish(timeout);
|
||||
return waitForFinish(timeout);
|
||||
}
|
||||
|
||||
|
||||
@@ -791,7 +791,7 @@ void PIThread::setPriority(PIThread::Priority prior) {
|
||||
# ifndef WINDOWS
|
||||
// PICout(PICoutManipulators::DefaultControls) << "setPriority" << PRIVATE->thread;
|
||||
int policy_ = 0;
|
||||
memset(&(PRIVATE->sparam), 0, sizeof(PRIVATE->sparam));
|
||||
piZeroMemory(PRIVATE->sparam);
|
||||
pthread_getschedparam(PRIVATE->thread, &policy_, &(PRIVATE->sparam));
|
||||
PRIVATE->sparam.
|
||||
# ifndef LINUX
|
||||
|
||||
@@ -143,15 +143,13 @@ public:
|
||||
EVENT_HANDLER0(void, stop);
|
||||
EVENT_HANDLER0(void, terminate);
|
||||
|
||||
//! \~english Stop thread and wait for finish.
|
||||
//! \~russian Останавливает поток и ожидает завершения.
|
||||
void stopAndWait(int timeout_ms) DEPRECATEDM("use waitForStart(PISystemTime)") {
|
||||
stopAndWait(PISystemTime::fromMilliseconds(timeout_ms));
|
||||
bool stopAndWait(int timeout_ms) DEPRECATEDM("use stopAndWait(PISystemTime)") {
|
||||
return stopAndWait(PISystemTime::fromMilliseconds(timeout_ms));
|
||||
}
|
||||
|
||||
//! \~english Stop thread and wait for finish.
|
||||
//! \~russian Останавливает поток и ожидает завершения.
|
||||
void stopAndWait(PISystemTime timeout = {});
|
||||
//! \~english Stop thread and wait for finish. Returns \b false if timeout expired.
|
||||
//! \~russian Останавливает поток и ожидает завершения. Возвращает \b false если таймаут истек.
|
||||
bool stopAndWait(PISystemTime timeout = {});
|
||||
|
||||
//! \~english Set common data passed to external function
|
||||
//! \~russian Устанавливает данные, передаваемые в функцию потока
|
||||
@@ -194,8 +192,8 @@ public:
|
||||
return waitForStart(PISystemTime::fromMilliseconds(timeout_msecs));
|
||||
}
|
||||
|
||||
//! \~english Wait for thread finish
|
||||
//! \~russian Ожидает завершения потока
|
||||
//! \~english Wait for thread finish. Returns \b false if timeout expired.
|
||||
//! \~russian Ожидает завершения потока. Возвращает \b false если таймаут истек.
|
||||
bool waitForFinish(PISystemTime timeout = {});
|
||||
bool waitForFinish(int timeout_msecs) DEPRECATEDM("use waitForFinish(PISystemTime)") {
|
||||
return waitForFinish(PISystemTime::fromMilliseconds(timeout_msecs));
|
||||
|
||||
@@ -324,7 +324,7 @@ PIString PIDateTime::toString(const PIString & format) const {
|
||||
|
||||
time_t PIDateTime::toSecondSinceEpoch() const {
|
||||
tm pt;
|
||||
memset(&pt, 0, sizeof(pt));
|
||||
piZeroMemory(pt);
|
||||
pt.tm_sec = seconds;
|
||||
pt.tm_min = minutes;
|
||||
pt.tm_hour = hours;
|
||||
|
||||
@@ -54,6 +54,14 @@ inline void piSleep(double secs) {
|
||||
piUSleep(int(secs * 1000000.));
|
||||
} // on !Windows consider constant "usleep" offset
|
||||
|
||||
//! \ingroup Types
|
||||
//! \brief
|
||||
//! \~english Precise sleep for "t" time
|
||||
//! \~russian Точно ожидает время "t"
|
||||
inline void piSleep(PISystemTime t) {
|
||||
t.sleep();
|
||||
}
|
||||
|
||||
//! \ingroup Types
|
||||
//! \~english Shortest available on current system sleep
|
||||
//! \~russian Наименее возможное для данной системы по длительности ожидание
|
||||
|
||||
@@ -548,7 +548,7 @@ void PIOpenCL::Kernel::zero() {
|
||||
|
||||
bool PIOpenCL::Kernel::init() {
|
||||
char kname[1024];
|
||||
memset(kname, 0, 1024);
|
||||
piZeroMemory(kname, 1024);
|
||||
cl_int ret = 0;
|
||||
ret = clGetKernelInfo(PRIVATE->kernel, CL_KERNEL_FUNCTION_NAME, 1024, kname, 0);
|
||||
if (ret != 0) {
|
||||
@@ -655,14 +655,14 @@ void PIOpenCL::KernelArg::init(void * _k, uint index) {
|
||||
cl_kernel k = (cl_kernel)_k;
|
||||
cl_int ret = 0;
|
||||
char nm[1024];
|
||||
memset(nm, 0, 1024);
|
||||
piZeroMemory(nm, 1024);
|
||||
ret = clGetKernelArgInfo(k, index, CL_KERNEL_ARG_TYPE_NAME, 1024, nm, 0);
|
||||
if (ret != 0) {
|
||||
piCout << "[PIOpenCL::Kernel]"
|
||||
<< "clGetKernelArgInfo(CL_KERNEL_ARG_TYPE_NAME) error" << ret;
|
||||
}
|
||||
type_name = nm;
|
||||
memset(nm, 0, 1024);
|
||||
piZeroMemory(nm, 1024);
|
||||
ret = clGetKernelArgInfo(k, index, CL_KERNEL_ARG_NAME, 1024, nm, 0);
|
||||
if (ret != 0) {
|
||||
piCout << "[PIOpenCL::Kernel]"
|
||||
|
||||
Reference in New Issue
Block a user