GFAI

ÓïÑÔÖÖÀࣺӢÎÄ µã´Ë¸ßËÙÏÂÔØÁ¢¼´ÏÂÔØ
°æ ±¾ ºÅ£ºV1.1
·¢²¼ÈÕÆÚ£º2007.01.02 Îļþ´óС£º349K
Èí¼þµÈ¼¶£º
ϵͳƽ̨£ºLinux
Èí¼þ³§ÉÌ£ºAigui.LIU Èí¼þÀàÐÍ£ºÃâ·Ñ
³§ÉÌÓʼþ£ºliuag@ihep.ac.cn ½çÃæÔ¤ÀÀ£ºÔÝÎÞ
Èí¼þ¼ò½é£ºGFAI(General File Access Interface) - ͨÓÃÎļþ·ÃÎʽӿÚ
GFAI(General File Access Interface) - ͨÓÃÎļþ·ÃÎʽӿÚ

1. ¹ØÓÚGFAI

GFAIÊÇLINUXϵͳÏÂÒ»¸öͳһ¿ÉÀ©Õ¹µÄ£¬ÓëPOSIX±ê×¼¼æÈݵÄC/C++ Îļþ·ÃÎʽӿڡ£ËüʹÓù²Ïí¿â¶¯Ì¬¼ÓÔØ¡¢¹þÏ£±íµÈ¼¼Êõ£¬ÔÚ²»½µµÍϵͳÐÔÄܵÄǰÌáÏ£¬Îª¸÷ÖÖÎļþ·ÃÎÊ(ÈçLocal File, RFIO, dcapµÈ)ÌṩÁËÒ»¸öÒ»ÖµĽӿڣ¬´Ó¶ø·½±ãÓû§Ê¹ÓúÍÓ¦ÓóÌÐòµÄ¿ª·¢¡£

GFAIĿǰ֧³ÖÈýÖÖÎļþϵͳ:Local File, RFIO, dcap, ÆäËûÎļþϵͳ°´ÒÔÏ·½·¨½øÐÐÀ©Õ¹£º
(1)Èç¹ûÎļþϵͳδÌṩ¿ª·¢¿â£¬°´gfai.hÖеĺ¯ÊýÔ­ÐÍ·â×°ÎļþϵͳAPI£»
(2)°´ libЭÒéÃû.so ±ê×¼ÃüÃû²¢·â×°¶¯Ì¬¹²Ïí¿â£¬ Èç librfio.so, libdc.so;
(3)°Ñ¹²Ïí¿â¸´ÖƵ½ÏµÍ³Â·¾¶Ï£¬Èç/usr/local/lib

Ϊ¼ò»¯À©Õ¹¿â¿ª·¢£¬ÔÚGFAI 1.1°æ±¾ÖÐÌṩÁË×Ô¶¯Éú³É´úÂë¿ò¼ÜµÄ¹¦ÄÜ£¬ÏêϸÇë²Î¼ûÔ´ÂëÖÐlib_bonesĿ¼¡£
(1) ./generate-stubs #Éú³É´úÂë¿ò¼Ü£¬¡¡²ÎÊýΪÎļþ·ÃÎÊЭÒéÃû
(2) ±à¼­.cÎļþ£¬ÊµÏÖÎļþÀïµÄº¯Êý
(3) make #±àÒë
(4) make install ££°²×°


GFAIĿǰ½öÌṩ×î³£ÓõĻù±¾ÎļþAPI£¬º¯ÊýÔ­ÐÍÈçÏ£º
int gfai_access(const char *fap, const char *pathname, int mode);
int gfai_chmod(const char *fap, const char *path, mode_t mode);
int gfai_chown(const char *fap, const char *path, uid_t owner, gid_t group);
int gfai_close(const char *fap, int fd);
int gfai_creat(const char *fap, const char *pathname, mode_t mode);
int gfai_fstat(const char *fap, int fd, struct stat *buf);
off_t gfai_lseek(const char *fap, int fd, long offset, int whence);
int gfai_lstat(const char *fap, const char *filename, struct stat *buf);
int gfai_mkdir(const char *fap, const char *pathname, mode_t mode);
int gfai_open(const char *fap, const char *pathname, int flags, mode_t mode);
ssize_t gfai_read(const char *fap, int fd, void *buf, size_t count);
int gfai_rename(const char *fap, const char *oldname, const char *newname);
int gfai_rmdir(const char *fap, const char *pathname);
int gfai_stat(const char *fap, const char *filename, struct stat *buf);
int gfai_unlink(const char *fap, const char *pathname);
ssize_t gfai_write(const char *fap, int fd, void *buf, size_t count);
DIR *gfai_opendir(const char *fap, const char *pathname);
int gfai_closedir(const char *fap, DIR *dir);
struct dirent *gfai_readdir(const char *fap, DIR *dir);
void gfai_rewinddir(const char *fap, DIR *dir);

ÆäÖУ¬fapΪÎļþ·ÃÎÊЭÒ飬Èçfile(±¾µØÎļþϵͳ), rfio(CASTOR), dc(dCache)¡£ÁíÍ⣬»¹ÓÐÁ½¸öhashÏà¹Øº¯Êý£¬ÓÃÓÚ³õʼ»¯ºÍÊÍ·ÅHASH±í£º
void init_hash_fap(void);
void free_hash_fap(void);


2. ÈçºÎʹÓÃGFAI

GFAIÊÇÃâ·Ñ(Free)ºÍ¿ªÔ´(OpenSource)µÄ£¬ÈκÎÈ˶¼¿É¸ù¾ÝGPLʹÓúʹ«²¥¡£

(1)¿ª·¢¡¢ÔËÐл·¾³£ºGNU/LINUX, GCC, C/C++
(2)±àÒë°²×°
make
make install
cp lib/*.* /usr/local/lib/

(3)²âÊÔ
cd test
make
./gfai_dir /home/
./gfai_dir /castor (Èç¹û°²×°ÁËCASTORϵͳ)

(4)¿ª·¢
#include 'gfai.h'
gcc ... -lgfai
Ïêϸ²Î¿¼testÑùÀý³ÌÐògfai_dir.c, gfai_copy.c Makefile

3. ¹ØÓÚ×÷Õß

Author: Aigui.LIU(Áõ°®¹ó)

Email: liuag@ihep.ac.cn

Homepage: http://aigui.liu.googlepages.com
µã´Ë¸ßËÙÏÂÔØ
ÍøÕ¾ºÏ×÷¡¢ÄÚÈݼල¡¢ÉÌÎñ×Éѯ¡¢Í¶Ëß½¨Ò飺010-65245588
ºÏ×÷½¨Ò飺hezuo@mail.enet.com.cn
Copyright©2000 - ¹è¹È¶¯Á¦°æÈ¨ËùÓÐ ¾©ICPÖ¤000088ºÅ
¾©ICPÖ¤000044ºÅ