Warning: copy(http://www.plantuml.com/plantuml/img/fJrhZ-IsaT_xL-YG3pVJ66VjTMBdqeQ1jNSS6rxl6ZkExowB1Q6MsDtAg2MDACqZnlptgmVVf6RQkG5sMsBnpMAzM2ojLbLRAbKKLvLgnFUzchxwgZYxklZ3Tzzz-UMddvw_K91E_ua30FzuABx-klXjfQPnhgQYRTGa3hAi2o5gUTjKKcroiAaSzt9IcuB_J1PRhQYEjHZwlYtMvWdg6PgkxQjhCHMxKKf15M92fWcROLEaG0NDtygQuNwrjToLSsihTO0rTIfewpXFyXvwN7Q27ZETa0SQnuq5JQMw5lfv3U2ogrivMd3L7uTMJatV4LIK5JvlLdTbCucRMSwIweN-K7SmUPDEtIIXbdAItEaenpIMdHhwqSzcqrpURNkj6vpAVR7UtaoRkLFDlfDrqNIw_Usi7ZQhD7rNDgsizTfcu30oLHraFUjScInTlrdX2sIjOSHjqqclfRRlzWLWwIH6gUGKzU5OtekcpYIsSvT9hM0LEjb6aBbhOFnXFUe0SyHbO5LRsN4VfqEZA2E-83hGnC5KKdP2NpbouvmKDAJsCCNRLghcNt8fmp3sqpEvi5TALbC_gdYYwcCfjltSrUNu4CEmTqgEJTcARZvk4HTj1iI-MocEVIt_-j9BdpjOlEeQza-ZIW6r__Kp7wgagDfPJL1hjqz0Y5XJTHEaquehsUu0scF50NIKjtA4alrOfrLI8lG4i3H81xpfUa2E-IY3zAuNTsCpIQ5AXi3gZyLTFmAwYmxIFhpyzAFT1PZEky3iMSxvH8Rfk1CcKsR7yFWoMFW4c5Q_AeTosxJDr4X_WQdxb64_boFCmyCWRUz62NrJcd8KwraDPILXozm4dICys9OgsM1DBv0enArrOW60U9RVJ4KpGeiICCmZKq24WVWezspxpOn3W_QoW_SB_GQF6Jgh3a2RvRwi7ZH9l-sRkbZh8kLKnbMliQzKLpXaB83vFo0IFAui2om--UHhrr in /var/www/dislab.hufs.ac.kr/wiki4lab/extensions/PlantUML/PlantUML.php on line 237
SYTest - Retired DISLab

SYTest

(버전 사이의 차이)
이동: 둘러보기, 찾기
259번째 줄: 259번째 줄:
 
inode --> rcu_head
 
inode --> rcu_head
 
inode --> file_lock
 
inode --> file_lock
 +
 +
class inode_operations << (S,#77FF00)/linux/fs.h>> {
 +
struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
 +
void * (*follow_link) (struct dentry *, struct nameidata *);
 +
int (*permission) (struct inode *, int);
 +
struct posix_acl * (*get_acl)(struct inode *, int);
 +
int (*readlink) (struct dentry *, char __user *,int);
 +
void (*put_link) (struct dentry *, struct nameidata *, void *);
 +
int (*create) (struct inode *,struct dentry *, umode_t, bool);
 +
int (*link) (struct dentry *,struct inode *,struct dentry *);
 +
int (*unlink) (struct inode *,struct dentry *);
 +
int (*symlink) (struct inode *,struct dentry *,const char *);
 +
int (*mkdir) (struct inode *,struct dentry *,umode_t);
 +
int (*rmdir) (struct inode *,struct dentry *);
 +
int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
 +
int (*rename) (struct inode *, struct dentry *, struct inode *, struct dentry *);
 +
int (*setattr) (struct dentry *, struct iattr *);
 +
int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *);
 +
int (*setxattr) (struct dentry *, const char *,const void *,size_t,int);
 +
ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
 +
ssize_t (*listxattr) (struct dentry *, char *, size_t);
 +
int (*removexattr) (struct dentry *, const char *);
 +
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len);
 +
int (*update_time)(struct inode *, struct timespec *, int);
 +
int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned open_flag, umode_t create_mode, int *opened);
 +
int (*tmpfile) (struct inode *, struct dentry *, umode_t);
 +
int (*set_acl)(struct inode *, struct posix_acl *, int);
 +
}
 +
inode_operations --> dentry
 +
inode_operations --> posix_acl
 +
 +
class dentry<< (S,#77FF00)/linux/dcache.h >> {
 +
unsigned int d_flags;   
 +
seqcount_t d_seq;       
 +
struct hlist_bl_node d_hash;   
 +
struct dentry *d_parent;   
 +
struct qstr d_name;
 +
struct inode *d_inode;
 +
unsigned char d_iname[DNAME_INLINE_LEN]; 
 +
struct lockref d_lockref; 
 +
const struct dentry_operations *d_op;
 +
struct super_block *d_sb;   
 +
unsigned long d_time;     
 +
void *d_fsdata;               
 +
struct list_head d_lru;     
 +
union {
 +
struct list_head d_child;   
 +
struct rcu_head d_rcu;
 +
} d_u;
 +
struct list_head d_subdirs; 
 +
struct hlist_node d_alias;     
 +
}
 +
dentry --> hlist_bl_node
 +
dentry --> qstr
 +
dentry --> inode
 +
dentry --> lockref
 +
dentry --> super_block
 +
dentry --> list_head
 +
dentry --> rcu_head
 +
dentry --> hlist_node
 +
 +
 +
class hlist_bl_node << (S,#77FF00)/linux/list_bl.h >> {
 +
struct hlist_bl_node *next, **pprev;
 +
}
 +
 +
class qstr  << (S,#77FF00)/linux/dcache.h >> {
 +
union {
 +
struct {
 +
HASH_LEN_DECLARE;
 +
};
 +
u64 hash_len;
 +
};
 +
const unsigned char *name;
 +
}
 +
 +
class lockref << (S,#77FF00)/linux/lockref.h >> {
 +
struct {
 +
spinlock_t lock;
 +
unsigned int count;
 +
};
 +
}
 +
 +
 +
class posix_acl << (S,#77FF00)/linux/posix_acl.h >> {
 +
union {
 +
atomic_t a_refcount;
 +
struct rcu_head a_rcu;
 +
};
 +
unsigned int a_count;
 +
struct posix_acl_entry a_entries[0];
 +
}
 +
posix_acl --> posix_acl_entry
 +
 +
 +
class posix_acl_entry << (S,#77FF00)/linux/posix_acl.h >> {
 +
short e_tag;
 +
unsigned short e_perm;
 +
union {
 +
kuid_t e_uid;
 +
kgid_t e_gid;
 +
};
 +
}
 +
 +
 +
class super_block << (S,#77FF00)/linux/fs.h >> {
 +
struct list_head s_list; 
 +
dev_t  s_dev;     
 +
unsigned char s_blocksize_bits;
 +
unsigned long s_blocksize;
 +
loff_t s_maxbytes; 
 +
struct file_system_type *s_type;
 +
const struct super_operations *s_op;
 +
const struct dquot_operations *dq_op;
 +
const struct quotactl_ops *s_qcop;
 +
const struct export_operations *s_export_op;
 +
unsigned long s_flags;
 +
unsigned long s_magic;
 +
struct dentry *s_root;
 +
struct rw_semaphore s_umount;
 +
int s_count;
 +
atomic_t s_active;
 +
const struct xattr_handler **s_xattr;
 +
struct list_head s_inodes;   
 +
struct hlist_bl_head s_anon;       
 +
struct list_head s_mounts; 
 +
struct block_device *s_bdev;
 +
struct backing_dev_info *s_bdi;
 +
struct mtd_info *s_mtd;
 +
struct hlist_node s_instances;
 +
struct quota_info s_dquot;     
 +
struct sb_writers s_writers;
 +
char s_id[32];                       
 +
u8 s_uuid[16];                 
 +
void *s_fs_info;   
 +
unsigned int s_max_links;
 +
fmode_t s_mode;
 +
u32 s_time_gran;
 +
struct mutex s_vfs_rename_mutex;
 +
char *s_subtype;
 +
char __rcu *s_options;
 +
const struct dentry_operations *s_d_op;
 +
int cleancache_poolid;
 +
struct shrinker s_shrink;
 +
atomic_long_t s_remove_count;
 +
int s_readonly_remount;
 +
struct workqueue_struct *s_dio_done_wq;
 +
struct list_lru s_dentry_lru ____cacheline_aligned_in_smp;
 +
struct list_lru s_inode_lru ____cacheline_aligned_in_smp;
 +
struct rcu_head rcu;
 +
}
 +
super_block --> list_head
 +
super_block --> file_system_type
 +
super_block --> super_operations
 +
super_block --> dquot_operations
 +
super_block --> quotactl_ops
 +
super_block --> export_operations
 +
super_block --> xattr_handler
 +
super_block --> hlist_bl_head
 +
super_block --> block_device
 +
super_block --> backing_dev_info
 +
super_block --> mtd_info
 +
super_block --> quota_info
 +
super_block --> sb_writers
 +
super_block --> mutex
 +
super_block --> dentry_operations
 +
super_block --> shrinker
 +
super_block --> workqueue_struct
 +
super_block --> list_lru
 +
 +
class file_system_type << (S,#77FF00)/linux/fs.h >> {
 +
const char *name;
 +
int fs_flags;
 +
struct dentry *(*mount) (struct file_system_type *, int,
 +
const char *, void *);
 +
void (*kill_sb) (struct super_block *);
 +
struct module *owner;
 +
struct file_system_type * next;
 +
struct hlist_head fs_supers;
 +
struct lock_class_key s_lock_key;
 +
struct lock_class_key s_umount_key;
 +
struct lock_class_key s_vfs_rename_key;
 +
struct lock_class_key s_writers_key[SB_FREEZE_LEVELS];
 +
struct lock_class_key i_lock_key;
 +
struct lock_class_key i_mutex_key;
 +
struct lock_class_key i_mutex_dir_key;
 +
}
 +
file_system_type --> dentry
 +
file_system_type --> module
 +
file_system_type --> hlist_head
 +
file_system_type --> lock_class_key
 +
 +
 +
class module << (S,#77FF00)/mod/modpost.h >> {
 +
struct module *next;
 +
const char *name;
 +
int gpl_compatible;
 +
struct symbol *unres;
 +
int seen;
 +
int skip;
 +
int has_init;
 +
int has_cleanup;
 +
struct buffer dev_table_buf;
 +
char        srcversion[25];
 +
int is_dot_o;
 +
}
 +
module --> symbol
 +
module --> buffer
 +
 +
 +
class symbol << (S,#77FF00)/mod/modpost.h >> {
 +
struct symbol *next;
 +
struct module *module;
 +
unsigned int crc;
 +
int crc_valid;
 +
unsigned int weak:1;
 +
unsigned int vmlinux:1;
 +
unsigned int kernel:1;
 +
unsigned int preloaded:1; 
 +
enum export  export;
 +
char name[0];
 +
}
 +
symbol --> module
 +
 +
 +
class buffer << (S,#77FF00)/mod/modpost.h >> {
 +
char *p;
 +
int pos;
 +
int size;
 +
}
 +
 +
class hlist_head << (S,#77FF00)/linux/types.h >> {
 +
struct hlist_node *first;
 +
}
 +
hlist_head --> hlist_node
 +
 +
class lock_class_key << (S,#77FF00)/linux/lockdep.h >> {
 +
struct lockdep_subclass_key subkeys[MAX_LOCKDEP_SUBCLASSES];
 +
}
 +
lock_class_key --> lockdep_subclass_key
 +
 +
 +
class lockdep_subclass_key << (S,#77FF00)/linux/lockdep.h >> {
 +
char __one_byte;
 +
}
 +
 +
 +
class super_operations<< (S,#77FF00)/linux/fs.h >> {
 +
struct inode *(*alloc_inode)(struct super_block *sb);
 +
void (*destroy_inode)(struct inode *);
 +
void (*dirty_inode) (struct inode *, int flags);
 +
int (*write_inode) (struct inode *, struct writeback_control *wbc);
 +
int (*drop_inode) (struct inode *);
 +
void (*evict_inode) (struct inode *);
 +
void (*put_super) (struct super_block *);
 +
int (*sync_fs)(struct super_block *sb, int wait);
 +
int (*freeze_fs) (struct super_block *);
 +
int (*unfreeze_fs) (struct super_block *);
 +
int (*statfs) (struct dentry *, struct kstatfs *);
 +
int (*remount_fs) (struct super_block *, int *, char *);
 +
void (*umount_begin) (struct super_block *);
 +
int (*show_options)(struct seq_file *, struct dentry *);
 +
int (*show_devname)(struct seq_file *, struct dentry *);
 +
int (*show_path)(struct seq_file *, struct dentry *);
 +
int (*show_stats)(struct seq_file *, struct dentry *);
 +
}
 +
super_operations --> inode
 +
 +
 +
class dquot_operations << (S,#77FF00) >> {
 +
 +
}
 +
 +
class quotactl_ops << (S,#77FF00) >> {
 +
 +
}
 +
 +
class export_operations<< (S,#77FF00) >> {
 +
 +
}
 +
 +
class  xattr_handler<< (S,#77FF00) >> {
 +
 +
}
 +
 +
class hlist_bl_head << (S,#77FF00) >> {
 +
 +
}
 +
class block_device << (S,#77FF00) >> {
 +
 +
}
 +
 +
class mtd_info << (S,#77FF00) >> {
 +
 +
}
 +
 +
class quota_info << (S,#77FF00) >> {
 +
 +
}
 +
 +
class sb_writers << (S,#77FF00) >> {
 +
 +
}
 +
 +
class dentry_operations << (S,#77FF00) >> {
 +
 +
}
 +
 +
class shrinker << (S,#77FF00) >> {
 +
 +
}
 +
 +
class list_lru << (S,#77FF00) >> {
 +
 +
}
 +
 +
 +
class backing_dev_info << (S,#77FF00) >> {
 +
 +
}
 +
 +
class timespec << (S,#77FF00)can't find >> {
 +
 +
}
 +
 +
class file_lock << (S,#77FF00)can't find >> {
 +
 +
}
 +
 +
class backing_dev_info << (S,#77FF00)can't find >> {
 +
 +
}
  
  
364번째 줄: 696번째 줄:
 
struct list_head all_q_node;
 
struct list_head all_q_node;
 
}
 
}
 
+
request_queue --> list_head
 +
request_queue --> request
 +
request_queue --> elevator_queue
 +
request_queue --> request_list
 +
request_queue --> blk_mq_ops
 +
request_queue --> blk_mq_ctx
 +
request_queue --> delayed_work
 +
request_queue --> backing_dev_info
 +
request_queue --> kobject
 +
request_queue --> blk_queue_tag
 +
request_queue --> timer_list
 +
request_queue --> queue_limits
 +
request_queue --> mutex
 +
request_queue --> rcu_head
 +
request_queue --> percpu_counter
  
  
400번째 줄: 746번째 줄:
 
bool offline:1;
 
bool offline:1;
 
}
 
}
 +
device --> device_private
 +
device --> kobject
 +
device --> device_type
 +
device --> mutex
 +
device --> bus_type
 +
device --> device_driver
 +
device --> dev_pm_info
 +
device --> dev_pm_domain
 +
device --> device_dma_parameters
 +
device --> list_head
 +
device --> dma_coherent_mem
 +
device --> dev_archdata
 +
device --> device_node
 +
device --> acpi_dev_node
 +
device --> klist_node
 +
device --> class
 +
device --> attribute_group
 +
device --> device
 +
device --> iommu_group
 +
  
  
409번째 줄: 775번째 줄:
 
const char *(* info)(struct Scsi_Host *);
 
const char *(* info)(struct Scsi_Host *);
 
int (* ioctl)(struct scsi_device *dev, int cmd, void __user *arg);
 
int (* ioctl)(struct scsi_device *dev, int cmd, void __user *arg);
 
 
}
 
}
 +
scsi_host_template --> module
  
  
432번째 줄: 798번째 줄:
 
struct bio_vec bi_inline_vecs[0];
 
struct bio_vec bi_inline_vecs[0];
 
}
 
}
 +
bio --> block_device
 +
bio --> bvec_iter
 +
bio --> bio_vec
 +
bio --> bio_set
  
  
495번째 줄: 865번째 줄:
 
struct request *next_rq;
 
struct request *next_rq;
 
}
 
}
 +
request --> list_head
 +
request --> call_single_data
 +
request --> work_struct
 +
request --> request_queue
 +
request --> blk_mq_ctx
 +
request --> bio
 +
request --> hlist_node
 +
request --> rb_node
 +
request --> io_cq
 +
request --> gendisk
 +
request --> hd_struct
 +
  
 
class blk_plug << (S,#FF7700)/linux/blkdev.h >> {
 
class blk_plug << (S,#FF7700)/linux/blkdev.h >> {
502번째 줄: 884번째 줄:
 
struct list_head cb_list;  
 
struct list_head cb_list;  
 
}
 
}
 +
blk_plug --> list_head
  
 
class scsi_device << (S,#FF7700)/scsi/scsi_device >> {
 
class scsi_device << (S,#FF7700)/scsi/scsi_device >> {
586번째 줄: 969번째 줄:
 
unsigned int max_device_blocked;
 
unsigned int max_device_blocked;
 
}
 
}
 +
scsi_device --> Scsi_Host
 +
scsi_device --> request_queue
 +
scsi_device --> list_head
 +
scsi_device --> scsi_cmnd
 +
scsi_device --> scsi_target
 +
scsi_device --> work_struct
 +
  
 
class scsi_cmnd << (S,#FF7700)/scsi/scsi_cmnd.h >> {
 
class scsi_cmnd << (S,#FF7700)/scsi/scsi_cmnd.h >> {

2014년 5월 12일 (월) 09:20 판

[An error occured in PlantUML extension]

개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기