Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Resolve two conflicts
  • Loading branch information
zzxuanyuan committed Jan 12, 2016
commit 4366feb6583001f6c62e731c05ac0cf707760dd9
16 changes: 8 additions & 8 deletions cmake/modules/SearchInstalledSoftware.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -147,14 +147,14 @@ if(builtin_lzma)
message(STATUS "Building LZMA version ${lzma_version} included in ROOT itself")
if(WIN32)
ExternalProject_Add(
LZMA
URL ${CMAKE_SOURCE_DIR}/core/lzma/src/xz-${lzma_version}-win32.tar.gz
#URL_MD5 65693dc257802b6778c28ed53ecca678
PREFIX LZMA
INSTALL_DIR ${CMAKE_BINARY_DIR}
CONFIGURE_COMMAND "" BUILD_COMMAND ""
INSTALL_COMMAND cmake -E copy lib/liblzma.dll <INSTALL_DIR>/bin
BUILD_IN_SOURCE 1)
LZMA
URL ${CMAKE_SOURCE_DIR}/core/lzma/src/xz-${lzma_version}-win32.tar.gz
#URL_MD5 65693dc257802b6778c28ed53ecca678
PREFIX LZMA
INSTALL_DIR ${CMAKE_BINARY_DIR}
CONFIGURE_COMMAND "" BUILD_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy lib/liblzma.dll <INSTALL_DIR>/bin
LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 BUILD_IN_SOURCE 1)
install(FILES ${CMAKE_BINARY_DIR}/LZMA/src/LZMA/lib/liblzma.dll DESTINATION ${CMAKE_INSTALL_BINDIR})
set(LZMA_LIBRARIES ${CMAKE_BINARY_DIR}/LZMA/src/LZMA/lib/liblzma.lib)
set(LZMA_INCLUDE_DIR ${CMAKE_BINARY_DIR}/LZMA/src/LZMA/include)
Expand Down
3 changes: 0 additions & 3 deletions core/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
############################################################################
# CMakeLists.txt file for building ROOT (global) core package
############################################################################
if(builtin_pcre)
add_subdirectory(pcre)
endif()
add_subdirectory(rint)
add_subdirectory(thread)
add_subdirectory(multiproc)
Expand Down
246 changes: 246 additions & 0 deletions core/unix/inc/TSignalHandler.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
// @(#)root/unix:$Id$
// Author: Fons Rademakers 15/09/95

/*************************************************************************
* Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/

#ifndef ROOT_TUnixSystem
#define ROOT_TUnixSystem


//////////////////////////////////////////////////////////////////////////
// //
// TUnixSystem //
// //
// Class providing an interface to the UNIX Operating System. //
// //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TSystem
#include "TSystem.h"
#endif
#ifndef ROOT_TSysEvtHandler
#include "TSysEvtHandler.h"
#endif
#ifndef ROOT_TTimer
#include "TTimer.h"
#endif

#include <thread>
#include <memory>

int StackTraceExec(void *);

typedef void (*SigHandler_t)(ESignals);


class TUnixSystem : public TSystem {

friend int StackTraceExec(void *);

private:
struct StackTraceHelper_t {
static const int fStringLength = 255;
char fShellExec[fStringLength];
char fPidString[fStringLength];
char fPidNum[fStringLength];
int fParentToChild[2];
int fChildToParent[2];
std::unique_ptr<std::thread> fHelperThread;
};

static StackTraceHelper_t fStackTraceHelper;

protected:
const char *FindDynamicLibrary(TString &lib, Bool_t quiet = kFALSE);
const char *GetLinkedLibraries();

// static functions providing semi-low level interface to raw Unix
static int UnixMakedir(const char *name);
static void *UnixOpendir(const char *name);
static const char *UnixGetdirentry(void *dir);
static const char *UnixHomedirectory(const char *user = 0);
static Long64_t UnixNow();
static int UnixWaitchild();
static int UnixSetitimer(Long_t ms);
static int UnixSelect(Int_t nfds, TFdSet *readready, TFdSet *writeready,
Long_t timeout);
static void UnixSignal(ESignals sig, SigHandler_t h);
static const char *UnixSigname(ESignals sig);
static void UnixSigAlarmInterruptsSyscalls(Bool_t set);
static void UnixResetSignal(ESignals sig);
static void UnixResetSignals();
static void UnixIgnoreSignal(ESignals sig, Bool_t ignore);
static int UnixFilestat(const char *path, FileStat_t &buf);
static int UnixFSstat(const char *path, Long_t *id, Long_t *bsize,
Long_t *blocks, Long_t *bfree);
static int UnixTcpConnect(const char *hostname, int port, int tcpwindowsize);
static int UnixUdpConnect(const char *hostname, int port);
static int UnixUnixConnect(int port);
static int UnixUnixConnect(const char *path);
static int UnixTcpService(int port, Bool_t reuse, int backlog,
int tcpwindowsize);
static int UnixUdpService(int port, int backlog);
static int UnixUnixService(int port, int backlog);
static int UnixUnixService(const char *sockpath, int backlog);
static int UnixRecv(int sock, void *buf, int len, int flag);
static int UnixSend(int sock, const void *buf, int len, int flag);

// added helper static members for stacktrace
static char *const kStackArgv[];
static char *const *GetStackArgv();
static void StackTraceHelperThread();
void CachePidInfo();

public:
TUnixSystem();
virtual ~TUnixSystem();

//---- Misc -------------------------------------------------
Bool_t Init();
void SetProgname(const char *name);
void SetDisplay();
const char *GetError();
const char *HostName();

//---- EventLoop --------------------------------------------
void DispatchOneEvent(Bool_t pendingOnly = kFALSE);
Int_t Select(TList *active, Long_t timeout);
Int_t Select(TFileHandler *fh, Long_t timeout);

//---- Handling of system events ----------------------------
void CheckChilds();
Bool_t CheckSignals(Bool_t sync);
Bool_t CheckDescriptors();
void DispatchSignals(ESignals sig);
void AddSignalHandler(TSignalHandler *sh);
TSignalHandler *RemoveSignalHandler(TSignalHandler *sh);
void ResetSignal(ESignals sig, Bool_t reset = kTRUE);
void ResetSignals();
void IgnoreSignal(ESignals sig, Bool_t ignore = kTRUE);
void SigAlarmInterruptsSyscalls(Bool_t set);
void AddFileHandler(TFileHandler *fh);
TFileHandler *RemoveFileHandler(TFileHandler *fh);

//---- Floating Point Exceptions Control --------------------
Int_t GetFPEMask();
Int_t SetFPEMask(Int_t mask = kDefaultMask);

//---- Time & Date ------------------------------------------
TTime Now();
void AddTimer(TTimer *ti);
TTimer *RemoveTimer(TTimer *ti);
void ResetTimer(TTimer *ti);
Bool_t DispatchTimers(Bool_t mode);
void Sleep(UInt_t milliSec);

//---- Processes --------------------------------------------
Int_t Exec(const char *shellcmd);
FILE *OpenPipe(const char *shellcmd, const char *mode);
int ClosePipe(FILE *pipe);
void Exit(int code, Bool_t mode = kTRUE);
void Abort(int code = 0);
int GetPid();
void StackTrace();
static void StackTraceFromThread();

//---- Directories ------------------------------------------
int MakeDirectory(const char *name);
void *OpenDirectory(const char *name);
void FreeDirectory(void *dirp);
const char *GetDirEntry(void *dirp);
Bool_t ChangeDirectory(const char *path);
const char *WorkingDirectory();
const char *HomeDirectory(const char *userName = 0);
const char *TempDirectory() const;
FILE *TempFileName(TString &base, const char *dir = 0);

//---- Paths & Files ----------------------------------------
const char *PrependPathName(const char *dir, TString& name);
Bool_t ExpandPathName(TString &patbuf);
char *ExpandPathName(const char *path);
Bool_t AccessPathName(const char *path, EAccessMode mode = kFileExists);
Bool_t IsPathLocal(const char *path);
int CopyFile(const char *from, const char *to, Bool_t overwrite = kFALSE);
int Rename(const char *from, const char *to);
int Link(const char *from, const char *to);
int Symlink(const char *from, const char *to);
int Unlink(const char *name);
int GetPathInfo(const char *path, FileStat_t &buf);
int GetFsInfo(const char *path, Long_t *id, Long_t *bsize,
Long_t *blocks, Long_t *bfree);
int Chmod(const char *file, UInt_t mode);
int Umask(Int_t mask);
int Utime(const char *file, Long_t modtime, Long_t actime);
const char *FindFile(const char *search, TString& file, EAccessMode mode = kFileExists);

//---- Users & Groups ---------------------------------------
Int_t GetUid(const char *user = 0);
Int_t GetGid(const char *group = 0);
Int_t GetEffectiveUid();
Int_t GetEffectiveGid();
UserGroup_t *GetUserInfo(Int_t uid);
UserGroup_t *GetUserInfo(const char *user = 0);
UserGroup_t *GetGroupInfo(Int_t gid);
UserGroup_t *GetGroupInfo(const char *group = 0);

//---- Environment Manipulation -----------------------------
const char *Getenv(const char *name);
void Setenv(const char *name, const char *value);
void Unsetenv(const char *name);

//---- System Logging ---------------------------------------
void Openlog(const char *name, Int_t options, ELogFacility facility);
void Syslog(ELogLevel level, const char *mess);
void Closelog();

//---- Standard Output redirection --------------------------
Int_t RedirectOutput(const char *name, const char *mode = "a",
RedirectHandle_t *h = 0);

//---- Dynamic Loading --------------------------------------
void AddDynamicPath(const char *lib);
const char *GetDynamicPath();
void SetDynamicPath(const char *lib);
Func_t DynFindSymbol(const char *module, const char *entry);
int Load(const char *module, const char *entry = "", Bool_t system = kFALSE);
void Unload(const char *module);
void ListSymbols(const char *module, const char *re = "");
void ListLibraries(const char *regexp = "");

//---- RPC --------------------------------------------------
TInetAddress GetHostByName(const char *server);
TInetAddress GetPeerName(int sock);
TInetAddress GetSockName(int sock);
int GetServiceByName(const char *service);
char *GetServiceByPort(int port);
int ConnectService(const char *server, int port, int tcpwindowsize, const char *protocol = "tcp");
int OpenConnection(const char *server, int port, int tcpwindowsize = -1, const char *protocol = "tcp");
int AnnounceTcpService(int port, Bool_t reuse, int backlog, int tcpwindowsize = -1);
int AnnounceUdpService(int port, int backlog);
int AnnounceUnixService(int port, int backlog);
int AnnounceUnixService(const char *sockpath, int backlog);
int AcceptConnection(int sock);
void CloseConnection(int sock, Bool_t force = kFALSE);
int RecvRaw(int sock, void *buffer, int length, int flag);
int SendRaw(int sock, const void *buffer, int length, int flag);
int RecvBuf(int sock, void *buffer, int length);
int SendBuf(int sock, const void *buffer, int length);
int SetSockOpt(int sock, int option, int val);
int GetSockOpt(int sock, int option, int *val);

//---- System, CPU and Memory info
int GetSysInfo(SysInfo_t *info) const;
int GetCpuInfo(CpuInfo_t *info, Int_t sampleTime = 1000) const;
int GetMemInfo(MemInfo_t *info) const;
int GetProcInfo(ProcInfo_t *info) const;

ClassDef(TUnixSystem,0) //Interface to Unix OS services
};

#endif
You are viewing a condensed version of this merge commit. You can view the full changes here.