⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libopenmosix.c

📁 OpenMosix工具
💻 C
字号:
/* Copyright (c) 2006 David Santo Orcero irbis@orcero.org               *//*  irbis@orcero.org  http://www.orcero.org/irbis                       *//* Code derived from previous work by Ariel Rosenblatt                  *//* Mosix is (c) of prof. Amnon Barak http://www.mosix.org               *//* Original Mosix code is (c) of prof. Amnon Barak http://www.mosix.org *//* OpenMosix is (c) of Moshe Bar http://www.openmosix.com               *//* Each respective trademark is of its own owner                        *//* All rights reserved.                                                 *//* This software is distributed under GPL 2                             *//* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTY IS ASSUMED.               *//* NO LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING            *//* FROM THE USE OF THIS SOFTWARE WILL BE ACCEPTED. IT CAN BURN              *//* YOUR HARD DISK, ERASE ALL YOUR DATA AND BROKE DOWN YOUR                  *//* MICROWAVE OVEN. YOU ARE ADVISED.                                         */#include "mos.h"intom_isopenmosix (){  return (!access ("/proc/hpc/", 0));};intom_read (const char *path){  int64_t val;  return (om_readval (path, &val) ? (int) val : -1);};char *om_read_s (const char *path){  char *val;  return (om_readval_s (path, &val) ? (char *) val : NULL);};intom_readproc (int pid, const char *item){  char fn[64];  sprintf (fn, "/proc/%d/om/%s", pid, item);  return (om_read (fn));};char *om_readproc_s (int pid, const char *item){  char fn[64];  sprintf (fn, "/proc/%d/om/%s", pid, item);  return (om_read_s (fn));};intom_readval (const char *file, int64_t * val){  int fd = open (file, 0);  int r;  char num[30];  if (fd == -1)    return (0);  r = read (fd, num, sizeof (num) - 1);  close (fd);  num[sizeof (num) - 1] = '\0';  return (r >= 0 && sscanf (num, "%lld", val) == 1);};intom_readval_s (const char *file, char **val){  int fd = open (file, 0);  int r;  char *strmax;  /* This allows to write a letter to your grandma with   * the name of the node...                            */  unsigned int maxlen = 1024;  if (fd == -1)    return (0);  strmax = (char *) malloc (maxlen);  r = read (fd, strmax, maxlen - 1);  close (fd);  strmax[maxlen - 1] = '\0';  *val = (char *) malloc (sizeof (char) * strlen (strmax));  return (r >= 0 && sscanf (strmax, "%s", *val) == 1);};intom_readval2 (const char *file, int *val1, int *val2){  int fd = open (file, 0);  int r;  char num[30];  if (fd == -1)    return (0);  num[sizeof (num) - 1] = '\0';  r = read (fd, num, sizeof (num) - 1);  close (fd);  if (r < 0)    return (0);  r = sscanf (num, "%d %d", val1, val2);  if (r == 1)    *val2 = 0;  else if (r != 2)    return (0);  return (1);};int64_tom_readnode (char *node, const char *item){/* TODO: Node management */  printf ("Node management not yet supported.\n");  return (0);};intom_write (const char *file, int64_t val){  int fd = open (file, 1);  size_t l, r;  char num[30];  if (fd == -1)    return (0);  sprintf (num, "%lld\n", val);  r = write (fd, num, l = strlen (num));  close (fd);  return (r == l);};intom_write2 (const char *file, int val, int64_t val2){  int fd = open (file, 1);  size_t l, r;  char num[30];  if (fd == -1)    return (0);  sprintf (num, "%d %lld\n", val, val2);  r = write (fd, num, l = strlen (num));  close (fd);  return (r == l);};intom_write_s (const char *file, char *val){  int fd = open (file, 1);  size_t l, r;  if (fd == -1)    return (0);  r = write (fd, val, l = strlen (val));  close (fd);  return (r == l);};intom_writeproc (int pid, const char *item, int64_t val){  char fn[64];  sprintf (fn, "/proc/%d/om/%s", pid, item);  return (om_write (fn, val));};intom_writeproc_s (int pid, const char *item, char *val){  char fn[64];  sprintf (fn, "/proc/%d/om/%s", pid, item);  return (om_write_s (fn, val));};intom_replace (const char *file, int64_t val){  int fd = open (file, 2);  size_t l, r;  char num[30];  int ret;  if (fd == -1)    return (0);  num[sizeof (num) - 1] = '\0';  r = read (fd, num, sizeof (num) - 1);  if (r < 0 || sscanf (num, "%d", &ret) != 1)    return (-1);  sprintf (num, "%lld\n", val);  r = write (fd, num, l = strlen (num));  close (fd);  return (r == l ? ret : -1);};intom_count_ints (const char *file){  int fd = open (file, 0);  int r;  char buf[4096];  char *p = buf, *np;  int n = 0;  if (fd == -1)    return (0);  r = read (fd, buf, sizeof (buf));  close (fd);  if (r < 0)    return (-1);  if (r == sizeof (buf))    {      errno = E2BIG;      return (-1);    }  buf[r] = '\0';  for (p = buf; strtol (p, &np, 0), np != p; p = np)    n++;  return (n);};intom_fill_ints (const char *file, int *into, int max){  int fd = open (file, 0);  int r;  char buf[4096];  char *p = buf, *np;  int n = 0;  if (fd == -1)    return (0);  r = read (fd, buf, sizeof (buf));  close (fd);  if (r < 0)    return (-1);  if (r == sizeof (buf))    {      errno = E2BIG;      return (-1);    }  buf[r] = '\0';  for (p = buf; n < max && (into[n] = strtol (p, &np, 0), np != p); p = np)    n++;  return (n);};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -