add powermanagement and disk utils

This commit is contained in:
Ertuğrul Erata
2015-07-31 10:59:10 +03:00
parent ada4e1ce08
commit 5ddcdd77d9
70 changed files with 3472 additions and 61 deletions
+19
View File
@@ -0,0 +1,19 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt
from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import get
def build():
autotools.make('CFLAGS="%s -fPIC" BACKEND=x86emu' % get.CFLAGS())
def install():
autotools.rawInstall("DESTDIR=%s" % get.installDIR())
pisitools.remove("/usr/lib/libx86.a")
pisitools.dodoc("COPYRIGHT")
@@ -0,0 +1,21 @@
--- lrmi.c.orig 2008-09-06 12:24:36.070136428 +0200
+++ lrmi.c 2008-09-06 12:28:10.584287458 +0200
@@ -55,6 +55,18 @@ OTHER DEALINGS IN THE SOFTWARE.
#include "x86-common.h"
#if defined(__linux__)
+#ifndef TF_MASK
+#define TF_MASK X86_EFLAGS_TF
+#endif
+#ifndef IF_MASK
+#define IF_MASK X86_EFLAGS_IF
+#endif
+#ifndef IOPL_MASK
+#define IOPL_MASK X86_EFLAGS_IOPL
+#endif
+#ifndef VIF_MASK
+#define VIF_MASK X86_EFLAGS_VIF
+#endif
#define DEFAULT_VM86_FLAGS (IF_MASK | IOPL_MASK)
#elif defined(__NetBSD__) || defined(__FreeBSD__)
#define DEFAULT_VM86_FLAGS (PSL_I | PSL_IOPL)
@@ -0,0 +1,64 @@
From fc4f25c4d16aaff7dcb5dd42cc20b292f4eb2218 Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied@redhat.com>
Date: Tue, 4 Aug 2009 13:08:42 +1000
Subject: [PATCH] git add x86.pc
---
Makefile | 15 ++++++++++++---
x86.pc.in | 10 ++++++++++
2 files changed, 22 insertions(+), 3 deletions(-)
create mode 100644 x86.pc.in
diff --git a/Makefile b/Makefile
index 951b617..953a499 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,7 @@
OBJECTS = x86-common.o
CFLAGS ?= -O2 -Wall -DDEBUG -g
LIBDIR ?= /usr/lib
+INCLUDEDIR ?= /usr/include
ifeq ($(BACKEND),x86emu)
OBJECTS += thunk.o x86emu/decode.o x86emu/debug.o x86emu/fpu.o \
@@ -29,10 +30,18 @@ objclean:
rm -f *.o *~
clean: objclean
- rm -f *.so.1 *.a
+ rm -f *.so.1 *.a x86.pc
-install: libx86.so.1
+x86.pc:
+ sed -e's,@prefix@,/usr,' x86.pc.in > x86.pc
+ sed -e's,@exec_prefix@,/usr,' -i x86.pc
+ sed -e's,@libdir@,${LIBDIR},' -i x86.pc
+ sed -e's,@includedir@,${INCLUDEDIR},' -i x86.pc
+ sed -e's,@PACKAGE_VERSION@,1.1,' -i x86.pc
+
+install: libx86.so.1 x86.pc
install -D libx86.so.1 $(DESTDIR)$(LIBDIR)/libx86.so.1
install -D libx86.a $(DESTDIR)$(LIBDIR)/libx86.a
+ install -D x86.pc $(DESTDIR)$(LIBDIR)/pkgconfig/x86.pc
ln -sf libx86.so.1 $(DESTDIR)$(LIBDIR)/libx86.so
- install -p -m 0644 -D lrmi.h $(DESTDIR)/usr/include/libx86.h
+ install -p -m 0644 -D lrmi.h $(DESTDIR)$(INCLUDEDIR)/libx86.h
diff --git a/x86.pc.in b/x86.pc.in
new file mode 100644
index 0000000..711d90d
--- /dev/null
+++ b/x86.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: x86
+Description: Library providing x86 emulator access
+Version: @PACKAGE_VERSION@
+Cflags: -I${includedir}
+Libs: -L${libdir} -lx86
--
1.5.4.1
@@ -0,0 +1,187 @@
diff -ur libx86-1.1/lrmi.c libx86-1.1.hack/lrmi.c
--- libx86-1.1/lrmi.c 2006-10-30 15:10:16.000000000 -0500
+++ libx86-1.1.hack/lrmi.c 2009-10-26 15:55:42.000000000 -0400
@@ -136,7 +136,7 @@
if (context.ready)
return 1;
- if (!LRMI_common_init())
+ if (!LRMI_common_init(0))
return 0;
/*
diff -ur libx86-1.1/thunk.c libx86-1.1.hack/thunk.c
--- libx86-1.1/thunk.c 2008-04-02 20:48:00.000000000 -0400
+++ libx86-1.1.hack/thunk.c 2009-10-26 16:05:39.000000000 -0400
@@ -139,11 +139,11 @@
int i;
X86EMU_intrFuncs intFuncs[256];
- if (!LRMI_common_init())
+ mmap_addr = LRMI_common_init(1);
+
+ if (!mmap_addr)
return 0;
- mmap_addr = 0;
-
X86EMU_pioFuncs pioFuncs = {
(&x_inb),
(&x_inw),
@@ -169,10 +169,10 @@
X86_ESP = 0xFFF9;
memset (stack, 0, 64*1024);
- *((char *)0) = 0x4f; /* Make sure that we end up jumping back to a
- halt instruction */
+ *mmap_addr = 0x4f; /* Make sure that we end up jumping back to a
+ halt instruction */
- M.mem_base = 0;
+ M.mem_base = (unsigned long)mmap_addr;
M.mem_size = 1024*1024;
return 1;
diff -ur libx86-1.1/x86-common.c libx86-1.1.hack/x86-common.c
--- libx86-1.1/x86-common.c 2008-05-16 12:56:23.000000000 -0400
+++ libx86-1.1.hack/x86-common.c 2009-10-26 16:03:21.000000000 -0400
@@ -45,14 +45,15 @@
static struct {
int ready;
int count;
+ void *offset;
struct mem_block blocks[REAL_MEM_BLOCKS];
} mem_info = { 0 };
static int
-real_mem_init(void)
+real_mem_init(int high_page)
{
void *m;
- int fd_zero;
+ int fd_zero, flags = MAP_SHARED;
if (mem_info.ready)
return 1;
@@ -63,9 +64,12 @@
return 0;
}
+ if (!high_page)
+ flags |= MAP_FIXED;
+
m = mmap((void *)REAL_MEM_BASE, REAL_MEM_SIZE,
- PROT_READ | PROT_WRITE | PROT_EXEC,
- MAP_FIXED | MAP_SHARED, fd_zero, 0);
+ PROT_READ | PROT_WRITE | PROT_EXEC,
+ flags, fd_zero, 0);
if (m == (void *)-1) {
perror("mmap /dev/zero");
@@ -76,6 +80,7 @@
close(fd_zero);
mem_info.ready = 1;
+ mem_info.offset = m;
mem_info.count = 1;
mem_info.blocks[0].size = REAL_MEM_SIZE;
mem_info.blocks[0].free = 1;
@@ -87,7 +92,7 @@
real_mem_deinit(void)
{
if (mem_info.ready) {
- munmap((void *)REAL_MEM_BASE, REAL_MEM_SIZE);
+ munmap(mem_info.offset, REAL_MEM_SIZE);
mem_info.ready = 0;
}
}
@@ -119,7 +124,7 @@
LRMI_alloc_real(int size)
{
int i;
- char *r = (char *)REAL_MEM_BASE;
+ char *r = (char *)mem_info.offset;
if (!mem_info.ready)
return NULL;
@@ -151,7 +156,7 @@
LRMI_free_real(void *m)
{
int i;
- char *r = (char *)REAL_MEM_BASE;
+ char *r = (char *)mem_info.offset;
if (!mem_info.ready)
return;
@@ -200,13 +205,15 @@
return *(unsigned short *)(i * 4);
}
-int LRMI_common_init(void)
+void *LRMI_common_init(int high_page)
{
- void *m;
+ void *m, *offset;
int fd_mem;
- if (!real_mem_init())
- return 0;
+ if (!real_mem_init(high_page))
+ return NULL;
+
+ offset = mem_info.offset - REAL_MEM_BASE;
/*
Map the Interrupt Vectors (0x0 - 0x400) + BIOS data (0x400 - 0x502)
@@ -217,33 +224,33 @@
if (fd_mem == -1) {
real_mem_deinit();
perror("open /dev/mem");
- return 0;
+ return NULL;
}
- m = mmap((void *)0, 0x502,
- PROT_READ | PROT_WRITE | PROT_EXEC,
- MAP_FIXED | MAP_SHARED, fd_mem, 0);
+ m = mmap(offset, 0x502,
+ PROT_READ | PROT_WRITE | PROT_EXEC,
+ MAP_FIXED | MAP_SHARED, fd_mem, 0);
if (m == (void *)-1) {
close(fd_mem);
real_mem_deinit();
perror("mmap /dev/mem");
- return 0;
+ return NULL;
}
- m = mmap((void *)0xa0000, 0x100000 - 0xa0000,
+ m = mmap(offset+0xa0000, 0x100000 - 0xa0000,
PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_FIXED | MAP_SHARED, fd_mem, 0xa0000);
if (m == (void *)-1) {
- munmap((void *)0, 0x502);
+ munmap(offset, 0x502);
close(fd_mem);
real_mem_deinit();
perror("mmap /dev/mem");
- return 0;
+ return NULL;
}
close(fd_mem);
- return 1;
+ return offset;
}
diff -ur libx86-1.1/x86-common.h libx86-1.1.hack/x86-common.h
--- libx86-1.1/x86-common.h 2006-09-07 18:44:27.000000000 -0400
+++ libx86-1.1.hack/x86-common.h 2009-10-26 16:01:19.000000000 -0400
@@ -40,4 +40,4 @@
void *LRMI_alloc_real(int size);
void LRMI_free_real(void *m);
-int LRMI_common_init(void);
+void *LRMI_common_init(int high_page);
+59
View File
@@ -0,0 +1,59 @@
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
<Source>
<Name>libx86</Name>
<Homepage>http://www.codon.org.uk/~mjg59/libx86/</Homepage>
<Packager>
<Name>PisiLinux Community</Name>
<Email>admins@pisilinux.org</Email>
</Packager>
<License>GPLv2</License>
<IsA>library</IsA>
<Summary>A hardware-independent library for executing real-mode x86 code</Summary>
<Description>libx86 contains the library and header files necessary for the development of programs that will use libx86 to make real-mode x86 calls.</Description>
<Archive sha1sum="c55d8a428ab7f2084010c255aa8c666602544af9" type="targz">http://www.codon.org.uk/~mjg59/libx86/downloads/libx86-1.1.tar.gz</Archive>
<Patches>
<!-- Fix building on newer kernels -->
<Patch>libx86-0.99-ifmask.patch</Patch>
<Patch level="1">libx86-add-pkgconfig.patch</Patch>
<Patch level="1">libx86-mmap-offset.patch</Patch>
</Patches>
</Source>
<Package>
<Name>libx86</Name>
<Files>
<Path fileType="library">/usr/lib</Path>
<Path fileType="doc">/usr/share/doc</Path>
</Files>
</Package>
<Package>
<Name>libx86-devel</Name>
<RuntimeDependencies>
<Dependency release="current">libx86</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="header">/usr/include</Path>
<Path fileType="data">/usr/lib/pkgconfig</Path>
</Files>
</Package>
<History>
<Update release="2">
<Date>2014-05-24</Date>
<Version>1.1</Version>
<Comment>Rebuild for gcc.</Comment>
<Name>PisiLinux Community</Name>
<Email>admins@pisilinux.org</Email>
</Update>
<Update release="1">
<Date>2010-10-13</Date>
<Version>1.1</Version>
<Comment>First release</Comment>
<Name>Pisi Linux Admins</Name>
<Email>admins@pisilinux.org</Email>
</Update>
</History>
</PISI>
+9
View File
@@ -0,0 +1,9 @@
<?xml version="1.0" ?>
<PISI>
<Source>
<Name>libx86</Name>
<Summary xml:lang="tr">Gerçek-mod x86 kodlarını çalıştırmak için donanım-bağımsız bir kütüphane</Summary>
<Description xml:lang="tr">libx86, gerçek-mod x86 çağrıları yapabilen programların geliştirilmesi için gerekli başlık dosyaları ve kütüphaneleri içerir.</Description>
<Description xml:lang="es">A menudo puede ser útil poder realizar llamadas de BIOS x86 en modo real desde el espacio de usuarios. lrmi facilita para ello una interfaz simple para equipos x86, sin embargo no funciona en otras plataformas. libx86 facilita la interfaz lrmi, pero además funcionará en plataformas como amd64 y alpha.</Description>
</Source>
</PISI>