1.1. 시작하기전에
개발을 하다가 보면 표준 API만으로는 많이 부족한 것을 느낍니다. 또한 OS마다 제공되는 API가 상이한것이 많아서 OS 독립적인 솔루션을 만드는데는 많은 시간이 투여되어야 하고 시행착오도 상당하다는 것을 느낍니다. 그래서 필자는 소스 공개까지는 아니지만 이러한 부분을 긁어줄수 있는 무언가가 있으면 좋겠다는 생각을 하였고 이를 Library 형태로 공개하려 합니다.
사용하실 분들이 많을지는 모르지만 부분적으로 일부는 예제 및 소스도 공개하면서 이 Project를 시작하려 합니다.
기본적으로 공개되는 것은 각 OS별 Library(Binary)를 제공하는 형태가 될것이며 필요한 경우 개발환경만 제공해주시면 관련 Platform으로의 Porting 작업후 제공해 드릴수 있을거라 생각합니다.
개선이 필요하거나 기능추가 또는 Platform porting 관련 요청사항이 있으시면 E-Mail(minzkn@minzkn.com)을 보내주세요.
사용하실 분들이 많을지는 모르지만 부분적으로 일부는 예제 및 소스도 공개하면서 이 Project를 시작하려 합니다.
기본적으로 공개되는 것은 각 OS별 Library(Binary)를 제공하는 형태가 될것이며 필요한 경우 개발환경만 제공해주시면 관련 Platform으로의 Porting 작업후 제공해 드릴수 있을거라 생각합니다.
개선이 필요하거나 기능추가 또는 Platform porting 관련 요청사항이 있으시면 E-Mail(minzkn@minzkn.com)을 보내주세요.
1.2. HWPORT PGL Download
1.3. HWPORT PGL Specification
1.3.1. Test된 Architecture
- x86 / x86_64(amd64) series
- PPC : 4xx
- mips : lx4189
- mipsel : au1200, smp8634, smp8654, smp8671
- ARM series
- sh4 : ST7109
- ... (이론적으로 Architecture에 의존관계는 매우 적어 쉽게 이식 가능. 단, 32bits OS 이상이 필요.)
1.3.2. Test된 OS
- Posix 계열 OS (예: Linux, Unix, ...)
- Kernel : 2.6.x, 3.0.x, 3.8.x, ...
- GLIBC : 2.2.5, 2.3, 2.3.5, 2.5, 2.13, ...
- uClibc : 0.9.26, 0.9.27, ...
- 배포판(Distribution)
- RedHat : 7.2, 7.3, 8.0, 9.0, Enterprise ES4, ...
- Fedora : Core1 ~ Core5, 7, 15, ...
- Gentoo : 2005.1 ~ 2011.0 "Gentoo Base System version 1.6.13 ~ 2.0.3", ...
- Ubuntu : 11.x, 12.x, ...
- Windows : cygwin, MinG, 98, 2000, XP, 2003, Vista, 7, 8, ...
- FreeBSD : (todo test)
- MacOS X : (todo test)
1.3.3. Ubuntu Linux 기준 선택적 의존관계성 (필수 요소는 아님)
- build-essential
- ia32-libs(12.04), lib32z1(14.04), lib32ncurses5(14.04), lib32bz2-1.0(14.04)
- libtool, autoconf, m4
- zlib1g-dev, libncurses5-dev
- gettext
- cmake
- genromfs, mtd-utils, mktemp, genisoimage, mklibs, mksh, nmh, ntpdate, aufs-tools
- gawk, bison, flex
- texinfo
- unzip
- cramfsprogs
- libcrypt-des-ede3-perl, libclass-errorhandler-perl,
- libcrypt-openssl-bignum-perl, libcrypt-openssl-rsa-perl,
- libcrypt-rijndael-perl, libdigest-sha-perl, libconvert-asn1-perl,
- libconvert-pem-perl, libxml-parser-perl, libpopt-dev
- ncurses-term, openssl, perl, sed, sharutils
- subversion, git, vsftpd, proftpd-basic, apache2, sysklogd(12.04), busybox-syslogd(14.04), tftpd, ccache
1.3.4. Test된 Build tools
- ANSI-C (C89 이상) : 모든 내부 소스는 Strict ANSI-C 기준에 충족하도록 작성됨
- gas(optional) : 2.11.93.0.2, 2.16.1, 2.17, 2.21, ... (일부 성능을 위해서 Architecture에 따른 최적화된 Assembly로 구현)
- 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, ...
- VisualStudio C++ : .NET 2002, .NET 2003, .NET 2005, .NET 2008, .NET 2010, ...
1.4. API Manual
- Pre-defined macro 상수 및 API
- Version 식별 API
- 비의존적 기초 API
- Dummy API (Dummy 함수)
- Assert API (조건검사 디버깅)
- Linked List 공통 API (연결리스트 공통 자료구조)
- Singly Linked List API (단방향 연결리스트 자료구조)
- Doubly Linked List API (이중 연결리스트 자료구조)
- Memory API (메모리)
- Heap API (할당자)
- Exception API (예외검출처리)
- Alloca API (지역할당)
- Environ API (환경변수)
- Atomic API (원자적 연산)
- Mutual Exclusion API (베타적 상호배제)
- Thread wrapper API (Thread 기반)
- Slab allocator API (Slab 할당자)
- Math API (수학연산)
- Binary Search API (이진 탐색)
- Bit order API (Endian 처리)
- Charecter Type API (c-type)
- String API (문자열)
- i18n API (다국어 및 Charset)
- Regular API (정규표현식)
- XML parser API (XML 구문분석)
- Terminal API (Console속성)
- Output console wrapper API (Console 출력)
- Serial API (Serial 통신)
- URI parser API (URI 구문파서)
- UUID generator API (UUID 생성)
- Time API (시간)
- Timer API (절대시간 및 타이머)
- Filter API (Stream data 선별)
- Socket API (Network 통신)
- Select wrapper API (I/O multiplexer wrapper)
- Resolver API (DNS 동기/비동기 쿼리)
- Signal wrappse API (Signal 처리)
- Event API (I/O, Timer, Signal, ASync connection, ... 등의 Event기반 처리)
- uDev API (udev message 처리)
- Command line argument parser API (명령행 인자 해석)
- Route info API (Route 정보)
- Memory state API (Memory 사용률)
- Network Interface Controller API (NIC 정보)
- ethtool 기반 NIC Link Info API (NIC Link 정보)
- mii 기반 NIC Link Info API (NIC Link 정보)
- FIFO buffer API (선입선출 buffer)
- INI Parser API (INI 구문해석)
- Data packetize/unpacketize API (Data 구조화)
- Fragment API (Data 단편화 자료구조)
- Instance API (자료에 ID기반 Handle 부여)
- Global Instance API (자료에 전역 ID기반 Handle 부여)
- CRC API (CRC 16/32/64 연산)
- MD5 API (MD5 연산)
- HTTP Digest API (HTTP Digest 인증)
- SHA1 API (SHA1 연산)
- SHA256 API (SHA256 연산)
- Hash API (Hash 자료구조)
- Security API (보안 공통 처리)
- SEED API (Seed 기반 암호화)
- DES API (DES/TrippleDES 기반 암호화)
- AES API (AED 기반 암호화)
- Key generator API (제품키 생성)
- Base64 API (Base64 부호화/복호화)
- File wrapper API (File/Directory 조작)
- Process API (프로세스 처리)
- Process Service API (프로세스 기반 처리)
- Reboot API (재부팅, 전원종료)
- Net stat API (Network 상태)
- Tree API (Tree 자료구조)
- Multicall API (실행파일 다중화)
- Randomize API (임의 상수 발생)
- FTP Server API (FTP 서버)
- FTP Client API (FTP 클라이언트)
- Dynamic Library Loader API (Shared Library loader)
- Plugin API (자체 정의된 분산객체 방식의 Plugin)
- Plugin interface API (Plugin 확장 구조)
- Builtin Plugin API (내장된 Plugin)
- TAR parser API (Tar 파일 분석)
- CGI API (CGI 기반 제공)
- ATA API (ATA 정보)
- XEnv2 parser API (XEenv2 자료구조)
- Multimedia Codec API (Codec 자료구조)
- WakeOnLan API (WOL)