1affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===- System.inc ---------------------------------------------------------===//
2affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
3affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//                     The MCLinker Project
4affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
5affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// This file is distributed under the University of Illinois Open Source
6affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// License. See LICENSE.TXT for details.
7affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
8affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===----------------------------------------------------------------------===//
9affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <string>
10affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <sys/types.h>
11affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <sys/stat.h>
12affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <fcntl.h>
13f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines#include <cstdlib>
14f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines#include <cstring>
15f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines#include <windows.h>
16affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
17affc150dc44fab1911775a49636d0ce85333b634Zonr Changnamespace mcld{
18affc150dc44fab1911775a49636d0ce85333b634Zonr Changnamespace sys{
19affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
20f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hineschar* strerror(int errnum)
21f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines{
22f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  return std::strerror(errnum);
23f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines}
24f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines
25f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hinesstd::string getDefaultTargetTriple()
26f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines{
27f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  return MCLD_DEFAULT_TARGET_TRIPLE;
28f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines}
29f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines
30f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hinesint GetPageSize()
31f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines{
32f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  static int _pagesize = 0;
33f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  if (! _pagesize) {
34f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines    SYSTEM_INFO sysinfo;
35f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines    GetSystemInfo (&sysinfo);
36f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines    _pagesize = sysinfo.dwPageSize;
37f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  }
38f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  return _pagesize;
39f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines}
40f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines
41f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines/// random - generate a random number.
42f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hineslong GetRandomNum()
43f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines{
44f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  return ::rand();
45f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines}
46f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines
47f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines/// srandom - set the initial seed value for future calls to random().
48f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hinesvoid SetRandomSeed(unsigned pSeed)
49f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines{
50f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  ::srand(pSeed);
51f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines}
52f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines
53affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} // namespace of sys
54affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} // namespace of mcld
55affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
56