#keywords hwport,hyper,pgl,glue,porting,api,design,c,library #title HWPORT PGL(Porting Glue Layer) SDK [wiki:Home 대문] / [wiki:CategoryOpenProject 공개프로젝트] / [wiki:hwport_pgl HWPORT PGL(Porting Glue Layer) SDK] ---- == [wiki:hwport_pgl HWPORT PGL(Porting Glue Layer) SDK] == * 작성자 조재혁([mailto:minzkn@minzkn.com]) * 고친과정 2014년 8월 3일 : 처음씀 [[TableOfContents]] === 시작하기전에 === 개발을 하다가 보면 표준 API만으로는 많이 부족한 것을 느낍니다. 또한 OS마다 제공되는 API가 상이한것이 많아서 OS 독립적인 솔루션을 만드는데는 많은 시간이 투여되어야 하고 시행착오도 상당하다는 것을 느낍니다. 그래서 필자는 소스 공개까지는 아니지만 이러한 부분을 긁어줄수 있는 무언가가 있으면 좋겠다는 생각을 하였고 이를 Library 형태로 공개하려 합니다. 사용하실 분들이 많을지는 모르지만 부분적으로 일부는 예제 및 소스도 공개하면서 이 Project를 시작하려 합니다. 기본적으로 공개되는 것은 각 OS별 Library(Binary)를 제공하는 형태가 될것이며 필요한 경우 개발환경만 제공해주시면 관련 Platform으로의 Porting 작업후 제공해 드릴수 있을거라 생각합니다. 개선이 필요하거나 기능추가 또는 Platform porting 관련 요청사항이 있으시면 E-Mail([mailto:minzkn@minzkn.com])을 보내주세요. === HWPORT PGL Download === === HWPORT PGL Specification === ==== Test된 Architecture ==== * x86 / x86_64(amd64) series * PPC : 4xx * mips : lx4189 * mipsel : au1200, smp8634, smp8654, smp8671 * ARM series * sh4 : ST7109 * ... (이론적으로 Architecture에 의존관계는 매우 적어 쉽게 이식 가능. 단, 32bits OS 이상이 필요.) ==== Test된 OS ==== * Posix 계열 OS (예: Linux, Unix, ...) 1. Kernel : 2.6.x, 3.0.x, 3.8.x, ... 1. GLIBC : 2.2.5, 2.3, 2.3.5, 2.5, 2.13, ... 1. uClibc : 0.9.26, 0.9.27, ... 1. 배포판(Distribution) 1. RedHat : 7.2, 7.3, 8.0, 9.0, Enterprise ES4, ... 1. Fedora : Core1 ~ Core5, 7, 15, ... 1. Gentoo : 2005.1 ~ 2011.0 "Gentoo Base System version 1.6.13 ~ 2.0.3", ... 1. Ubuntu : 11.x, 12.x, ... * Windows : cygwin, MinG, 98, 2000, XP, 2003, Vista, 7, 8, ... * FreeBSD : (todo test) * MacOS X : (todo test) ==== Ubuntu Linux 기준 선택적 의존관계성 (필수 요소는 아님) ==== 1. build-essential 1. ia32-libs(12.04), lib32z1(14.04), lib32ncurses5(14.04), lib32bz2-1.0(14.04) 1. libtool, autoconf, m4 1. zlib1g-dev, libncurses5-dev 1. gettext 1. cmake 1. genromfs, mtd-utils, mktemp, genisoimage, mklibs, mksh, nmh, ntpdate, aufs-tools 1. gawk, bison, flex 1. texinfo 1. unzip 1. cramfsprogs 1. libcrypt-des-ede3-perl, libclass-errorhandler-perl, 1. libcrypt-openssl-bignum-perl, libcrypt-openssl-rsa-perl, 1. libcrypt-rijndael-perl, libdigest-sha-perl, libconvert-asn1-perl, 1. libconvert-pem-perl, libxml-parser-perl, libpopt-dev 1. ncurses-term, openssl, perl, sed, sharutils 1. subversion, git, vsftpd, proftpd-basic, apache2, sysklogd(12.04), busybox-syslogd(14.04), tftpd, ccache ==== Test된 Build tools ==== 1. ANSI-C (C89 이상) : 모든 내부 소스는 Strict ANSI-C 기준에 충족하도록 작성됨 1. gas(optional) : 2.11.93.0.2, 2.16.1, 2.17, 2.21, ... (일부 성능을 위해서 Architecture에 따른 최적화된 Assembly로 구현) 1. gcc : 2.95.3, 2.96, 3.2, 3.3.4, 3.3.6, 3.4.4, 3.3.6, 4.1.1, 4.1.2, 4.5.3, ... 1. VisualStudio C++ : .NET 2002, .NET 2003, .NET 2005, .NET 2008, .NET 2010, ... === API Manual === * [wiki:hwport_pgl_predefined Pre-defined macro 상수 및 API] * [wiki:hwport_pgl_version Version 식별 API] * [wiki:hwport_pgl_base 비의존적 기초 API] * [wiki:hwport_pgl_nop Dummy API (Dummy 함수)] * [wiki:hwport_pgl_assert Assert API (조건검사 디버깅)] * [wiki:hwport_pgl_linked_list Linked List 공통 API (연결리스트 공통 자료구조)] * [wiki:hwport_pgl_singly_linked_list Singly Linked List API (단방향 연결리스트 자료구조)] * [wiki:hwport_pgl_doubly_linked_list Doubly Linked List API (이중 연결리스트 자료구조)] * [wiki:hwport_pgl_memory Memory API (메모리)] * [wiki:hwport_pgl_heap Heap API (할당자)] * [wiki:hwport_pgl_exception Exception API (예외검출처리)] * [wiki:hwport_pgl_alloca Alloca API (지역할당)] * [wiki:hwport_pgl_environ Environ API (환경변수)] * [wiki:hwport_pgl_atomic Atomic API (원자적 연산)] * [wiki:hwport_pgl_mutual_exclusion Mutual Exclusion API (베타적 상호배제)] * [wiki:hwport_pgl_service Thread wrapper API (Thread 기반)] * [wiki:hwport_pgl_slab Slab allocator API (Slab 할당자)] * [wiki:hwport_pgl_math Math API (수학연산)] * [wiki:hwport_pgl_binary_search Binary Search API (이진 탐색)] * [wiki:hwport_pgl_order Bit order API (Endian 처리)] * [wiki:hwport_pgl_ctype Charecter Type API (c-type)] * [wiki:hwport_pgl_string String API (문자열)] * [wiki:hwport_pgl_i18n i18n API (다국어 및 Charset)] * [wiki:hwport_pgl_regular Regular API (정규표현식)] * [wiki:hwport_pgl_xml_parser XML parser API (XML 구문분석)] * [wiki:hwport_pgl_terminal Terminal API (Console속성)] * [wiki:hwport_pgl_puts Output console wrapper API (Console 출력)] * [wiki:hwport_pgl_serial Serial API (Serial 통신)] * [wiki:hwport_pgl_uri URI parser API (URI 구문파서)] * [wiki:hwport_pgl_uuid UUID generator API (UUID 생성)] * [wiki:hwport_pgl_time Time API (시간)] * [wiki:hwport_pgl_timer Timer API (절대시간 및 타이머)] * [wiki:hwport_pgl_filter Filter API (Stream data 선별)] * [wiki:hwport_pgl_socket Socket API (Network 통신)] * [wiki:hwport_pgl_select Select wrapper API (I/O multiplexer wrapper)] * [wiki:hwport_pgl_resolver Resolver API (DNS 동기/비동기 쿼리)] * [wiki:hwport_pgl_signal Signal wrappse API (Signal 처리)] * [wiki:hwport_pgl_event Event API (I/O, Timer, Signal, ASync connection, ... 등의 Event기반 처리)] * [wiki:hwport_pgl_udev uDev API (udev message 처리)] * [wiki:hwport_pgl_argument Command line argument parser API (명령행 인자 해석)] * [wiki:hwport_pgl_route Route info API (Route 정보)] * [wiki:hwport_pgl_meminfo Memory state API (Memory 사용률)] * [wiki:hwport_pgl_nic Network Interface Controller API (NIC 정보)] * [wiki:hwport_pgl_nic_ethtool ethtool 기반 NIC Link Info API (NIC Link 정보)] * [wiki:hwport_pgl_nic_mii mii 기반 NIC Link Info API (NIC Link 정보)] * [wiki:hwport_pgl_buffer FIFO buffer API (선입선출 buffer)] * [wiki:hwport_pgl_ini INI Parser API (INI 구문해석)] * [wiki:hwport_pgl_packet Data packetize/unpacketize API (Data 구조화)] * [wiki:hwport_pgl_fragment Fragment API (Data 단편화 자료구조)] * [wiki:hwport_pgl_instance Instance API (자료에 ID기반 Handle 부여)] * [wiki:hwport_pgl_ginstance Global Instance API (자료에 전역 ID기반 Handle 부여)] * [wiki:hwport_pgl_crc CRC API (CRC 16/32/64 연산)] * [wiki:hwport_pgl_md5 MD5 API (MD5 연산)] * [wiki:hwport_pgl_http_digest HTTP Digest API (HTTP Digest 인증)] * [wiki:hwport_pgl_sha1 SHA1 API (SHA1 연산)] * [wiki:hwport_pgl_sha256 SHA256 API (SHA256 연산)] * [wiki:hwport_pgl_hash Hash API (Hash 자료구조)] * [wiki:hwport_pgl_security Security API (보안 공통 처리)] * [wiki:hwport_pgl_seed SEED API (Seed 기반 암호화)] * [wiki:hwport_pgl_des DES API (DES/TrippleDES 기반 암호화)] * [wiki:hwport_pgl_aes AES API (AED 기반 암호화)] * [wiki:hwport_pgl_keygen Key generator API (제품키 생성)] * [wiki:hwport_pgl_base64 Base64 API (Base64 부호화/복호화)] * [wiki:hwport_pgl_file File wrapper API (File/Directory 조작)] * [wiki:hwport_pgl_process Process API (프로세스 처리)] * [wiki:hwport_pgl_process_service Process Service API (프로세스 기반 처리)] * [wiki:hwport_pgl_reboot Reboot API (재부팅, 전원종료)] * [wiki:hwport_pgl_netstat Net stat API (Network 상태)] * [wiki:hwport_pgl_tree Tree API (Tree 자료구조)] * [wiki:hwport_pgl_multicall Multicall API (실행파일 다중화)] * [wiki:hwport_pgl_rand Randomize API (임의 상수 발생)] * [wiki:hwport_pgl_ftpd FTP Server API (FTP 서버)] * [wiki:hwport_pgl_ftp FTP Client API (FTP 클라이언트)] * [wiki:hwport_pgl_dynamic_library_loader Dynamic Library Loader API (Shared Library loader)] * [wiki:hwport_pgl_plugin Plugin API (자체 정의된 분산객체 방식의 Plugin)] * [wiki:hwport_pgl_interface Plugin interface API (Plugin 확장 구조)] * [wiki:hwport_pgl_builtin_plugin Builtin Plugin API (내장된 Plugin)] * [wiki:hwport_pgl_tar TAR parser API (Tar 파일 분석)] * [wiki:hwport_pgl_cgi CGI API (CGI 기반 제공)] * [wiki:hwport_pgl_ata ATA API (ATA 정보)] * [wiki:hwport_pgl_xenv2 XEnv2 parser API (XEenv2 자료구조)] * [wiki:hwport_pgl_codec Multimedia Codec API (Codec 자료구조)] * [wiki:hwport_pgl_wol WakeOnLan API (WOL)]