Add a new abstraction, SysConfig for platform independent system

configuration calls. Right now this just contains PreventCoreFiles so that
bugpoint can by platform independent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16124 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer 2004-08-31 17:43:29 +00:00
parent d19e2901c1
commit 387e5ec502
8 changed files with 200 additions and 0 deletions

View File

@ -0,0 +1,27 @@
//===- AIX/SysConfig.cpp - AIX SysConfig Implementation ---------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file was developed by Reid Spencer and is distributed under the
// University of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file provides the AIX specific implementation of the SysConfig class.
//
//===----------------------------------------------------------------------===//
// Include the generic unix implementation
#include "../Unix/SysConfig.cpp"
namespace llvm {
using namespace sys;
//===----------------------------------------------------------------------===//
//=== WARNING: Implementation here must contain only AIX specific code
//=== and must not be generic UNIX code (see ../Unix/SysConfig.cpp)
//===----------------------------------------------------------------------===//
}
// vim: sw=2 smartindent smarttab tw=80 autoindent expandtab

View File

@ -0,0 +1,27 @@
//===- Cygwin/SysConfig.cpp - Cygwin SysConfig Implementation ---*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file was developed by Reid Spencer and is distributed under the
// University of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file provides the Cygwin specific implementation of the SysConfig class.
//
//===----------------------------------------------------------------------===//
// Include the generic unix implementation
#include "../Unix/SysConfig.cpp"
namespace llvm {
using namespace sys;
//===----------------------------------------------------------------------===//
//=== WARNING: Implementation here must contain only Cygwin specific code
//=== and must not be generic UNIX code (see ../Unix/SysConfig.cpp)
//===----------------------------------------------------------------------===//
}
// vim: sw=2 smartindent smarttab tw=80 autoindent expandtab

View File

@ -0,0 +1,27 @@
//===- Darwin/SysConfig.cpp - Darwin SysConfig Implementation ---*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file was developed by Reid Spencer and is distributed under the
// University of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file provides the Darwin specific implementation of the SysConfig class.
//
//===----------------------------------------------------------------------===//
// Include the generic unix implementation
#include "../Unix/SysConfig.cpp"
namespace llvm {
using namespace sys;
//===----------------------------------------------------------------------===//
//=== WARNING: Implementation here must contain only Darwin specific code
//=== and must not be generic UNIX code (see ../Unix/SysConfig.cpp)
//===----------------------------------------------------------------------===//
}
// vim: sw=2 smartindent smarttab tw=80 autoindent expandtab

View File

@ -0,0 +1,27 @@
//===- Linux/SysConfig.cpp - Linux SysConfig Implementation -----*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file was developed by Reid Spencer and is distributed under the
// University of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file provides the Linux specific implementation of the Signals class.
//
//===----------------------------------------------------------------------===//
// Include the generic unix implementation
#include "../Unix/SysConfig.cpp"
namespace llvm {
using namespace sys;
//===----------------------------------------------------------------------===//
//=== WARNING: Implementation here must contain only Linux specific code
//=== and must not be generic UNIX code (see ../Unix/Signals.cpp)
//===----------------------------------------------------------------------===//
}
// vim: sw=2 smartindent smarttab tw=80 autoindent expandtab

View File

@ -0,0 +1,27 @@
//===- SunOS/SysConfig.cpp - SunOS SysConfig Implementation -----*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file was developed by Reid Spencer and is distributed under the
// University of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file provides the SunOS specific implementation of the SysConfig class.
//
//===----------------------------------------------------------------------===//
// Include the generic unix implementation
#include "../Unix/SysConfig.cpp"
namespace llvm {
using namespace sys;
//===----------------------------------------------------------------------===//
//=== WARNING: Implementation here must contain only SunOS specific code
//=== and must not be generic UNIX code (see ../Unix/SysConfig.cpp)
//===----------------------------------------------------------------------===//
}
// vim: sw=2 smartindent smarttab tw=80 autoindent expandtab

29
lib/System/SysConfig.cpp Normal file
View File

@ -0,0 +1,29 @@
//===- SysConfig.cpp - System Configuration Support ---------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file was developed by Reid Spencerand is distributed under the University
// of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines the operating system independent SysConfig abstraction.
//
//===----------------------------------------------------------------------===//
#include "llvm/System/SysConfig.h"
namespace llvm {
using namespace sys;
//===----------------------------------------------------------------------===//
//=== WARNING: Implementation here must contain only TRULY operating system
//=== independent code.
//===----------------------------------------------------------------------===//
}
// Include the platform-specific parts of this class.
#include "platform/SysConfig.cpp"
// vim: sw=2 smartindent smarttab tw=80 autoindent expandtab

View File

@ -0,0 +1,35 @@
//===- SysConfig.cpp - Generic UNIX System Configuration --------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file was developed by Reid Spencer and is distributed under the
// University of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines some functions for managing system configuration on Unix
// systems.
//
//===----------------------------------------------------------------------===//
#include "Unix.h"
#include <sys/resource.h>
namespace llvm {
using namespace sys;
// Some LLVM programs such as bugpoint produce core files as a normal part of
// their operation. To prevent the disk from filling up, this configuration item
// does what's necessary to prevent their generation.
void PreventCoreFiles() {
struct rlimit rlim;
rlim.rlim_cur = rlim.rlim_max = 0;
int res = setrlimit(RLIMIT_CORE, &rlim);
if (res != 0)
ThrowErrno("Can't prevent core file generation");
}
}
// vim: sw=2 smartindent smarttab tw=80 autoindent expandtab

View File

@ -25,6 +25,7 @@
#include <sys/types.h>
#include <sys/param.h>
#include <assert.h>
#include <string>
inline void ThrowErrno(const std::string& prefix) {
#if defined __USE_XOPEN2K || defined __USE_MISC