usb 结构体
struct usb_device_id来自include/linux/mod_devicetable.h
struct usb_device_id {
98 /* which fields to match against? */
99 __u16 match_flags;
100
101 /* Used for product specific matches; range is inclusive */
102 __u16 idVendor;
103 __u16 idProduct;
104 __u16 bcdDevice_lo;
105 __u16 bcdDevice_hi;
106
107 /* Used for device class matches */
108 __u8 bDeviceClass;
109 __u8 bDeviceSubClass;
110 __u8 bDeviceProtocol;
111
112 /* Used for interface class matches */
113 __u8 bInterfaceClass;
114 __u8 bInterfaceSubClass;
115 __u8 bInterfaceProtocol;
116
117 /* not matched against */
118 kernel_ulong_t driver_info;
119 };
上节我们注意到id_index=id-storage_usb_ids,id我们知道,storage_probe函数的两个形
参之一,而
storage_usb_ids,不是别人,正是我们曾经赋给usb_storage_driver的成员id_table的值.
忘记了
id_table的可以回去看.它实际上就是一张表格,告诉全世界我这个driver支持怎样的一些
设
备.storage_usb_ids同样来自drivers/usb/storage/usb.c中,
111 /* The entries in this table, except for final ones here
112 * (USB_MASS_STORAGE_CLASS and the empty entry), correspond,
113 * line for line with the entries of us_unsuaul_dev_list[].
114 */
115
116 #define UNUSUAL_DEV(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax, \
117 vendorName, productName,useProtocol, useTransport, \
118 initFunction, flags) \
119 { USB_DEVICE_VER(id_vendor, id_product, bcdDeviceMin,bcdDeviceMax) }
120
121 static struct usb_device_id storage_usb_ids [] = {
122
123 # include "unusual_devs.h"
124 #undef UNUSUAL_DEV
125 /* Control/Bulk transport for all SubClass values */
126 { USB_INTERFACE_INFO(USB_CLASS_MASS_STORAGE, US_SC_RBC, US_PR_CB) },
127 { USB_INTERFACE_INFO(USB_CLASS_MASS_STORAGE, US_SC_8020, US_PR_CB) },
USB_INTERFACE_INFO这个咚咚,很显
然这是一个宏,来自include/linux/usb.h,
482 #define USB_INTERFACE_INFO(cl,sc,pr) \
483 .match_flags = USB_DEVICE_ID_MATCH_INT_INFO, .bInterfaceClass =
(cl), .bInterfaceSubClass = (sc), .bInterfaceProtocol = (pr) 每一个USB_INTERFACE_INFO就是构造一个struct usb_device_id的结构体变量,回顾一下我
们之前
给出的struct usb_device_id的定义,这里实际上就是为其中的四个元素赋了值,它们是
match_flags,bInterfaceClass,bInterfaceSubClass,bInterfaceProtocol.
match_flag,它又是表示什么意思?USB_INTERFACE_INFO这个宏貌似把所有的设
备的match_flag都给设成了USB_DEVICE_ID_MATCH_INT_INFO,这是为啥?这个宏来自
include/linux/usb.h,
435 #define USB_DEVICE_ID_MATCH_INT_INFO \
436 (USB_DEVICE_ID_MATCH_INT_CLASS |
USB_DEVICE_ID_MATCH_INT_SUBCLASS | USB_DEVICE_ID_MATCH_INT_PROTOCOL) match_flag这个咚咚是给usb core去用的,usb core负责给设备寻找适合她的driver,负责
给driver
寻找适合他的device,它所比较的就是struct usb_device_id的变量,而struct
usb_device_id结构体
中有许多成员,那么是不是一定要把每一个成员都给比较一下呢,其实没有必要那么细,差不
多就行了,比如
咱们这里,就是告诉usb core,你只要比较
bInterfaceClass,bInterfaceSubClass,bInterfaceProtocol 即可.include/linux/mod_devicetable.h中针对struct usb_device_id中的每一个要比较
的项定义了
一个宏: 32
121 /* Some useful macros to use to create struct usb_device_id */
122 #define USB_DEVICE_ID_MATCH_VENDOR 0x0001
123 #define USB_DEVICE_ID_MATCH_PRODUCT 0x0002
124 #define USB_DEVICE_ID_MATCH_DEV_LO 0x0004
125 #define USB_DEVICE_ID_MATCH_DEV_HI 0x0008
126 #define USB_DEVICE_ID_MATCH_DEV_CLASS 0x0010
127 #define USB_DEVICE_ID_MATCH_DEV_SUBCLASS 0x0020
128 #define USB_DEVICE_ID_MATCH_DEV_PROTOCOL 0x0040
129 #define USB_DEVICE_ID_MATCH_INT_CLASS 0x0080
130 #define USB_DEVICE_ID_MATCH_INT_SUBCLASS 0x0100
131 #define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200 回去对比一下struct usb_device_id就知道这些宏是什么意思了.
472行, struct us_unusual_dev,这个结构体是第一次出现,她定义于
drivers/usb/storage/usb.h中,
55 /*
56 * Unusual device list definitions
57 */
58
59 struct us_unusual_dev {
60 const char* vendorName;
61 const char* productName;
62 __u8 useProtocol;
63 __u8 useTransport;
64 int (*initFunction)(struct us_data *);
65 unsigned int flags;
66 };
us_unusal_dev_list是一个数组,定义于drivers/usb/storage/usb.c:
static struct us_unusual_dev us_unusual_dev_list[] = {
#undef UNUSUAL_DEV
169 #define UNUSUAL_DEV(idVendor, idProduct, bcdDeviceMin, bcdDeviceMax, \
170 vendor_name, product_name, use_protocol, use_transport,
\
171 init_function, Flags) \
172 { \
173 .vendorName = vendor_name, \
174 .productName = product_name, \
175 .useProtocol = use_protocol, \
176 .useTransport = use_transport, \
177 .initFunction = init_function, \
178 .flags = Flags, \
179 }
180
182 # include "unusual_devs.h"
183 # undef UNUSUAL_DEV
184 /* Control/Bulk transport for all SubClass values */
185 { .useProtocol = US_SC_RBC,
186 .useTransport = US_PR_CB},
187 { .useProtocol = US_SC_8020,
188 .useTransport = US_PR_CB},
.
.
.
struct usb_interface.它定义于
include/linux/usb.h:
struct usb_interface {
116 /* array of alternate settings for this interface,
117 * stored in no particular order */
118 struct usb_host_interface *altsetting;
119
120 struct usb_host_interface *cur_altsetting; /* the currently
121 * active alternate setting */
122 unsigned num_altsetting; /* number of alternate settings */
123
124 int minor; /* minor number this interface is bound to */
125 enum usb_interface_condition condition; /* state of binding */
126 struct device dev; /* interface specific device info */
127 struct class_device *class_dev;
128 };
129 #define to_usb_interface(d) container_of(d, struct usb_interface, dev)
130 #define interface_to_usbdev(intf) \
131 container_of(intf->dev.parent, struct usb_device, dev)
于include/linux/usb.h:
struct usb_host_interface {
53 struct usb_interface_descriptor desc;
54
55 /* array of desc.bNumEndpoint endpoints associated with this
56 * interface setting. these will be in no particular order.
57 */
58 struct usb_host_endpoint *endpoint;
59
60 unsigned char *extra; /* Extra descriptors */
61 int extralen; 35
62 };
include/linux/usb_ch9.h.(这里取名为"ch9"是因为这个文件很多东西对应于usb
spec 2.0中的第九章,chapter 9.):
242 /* USB_DT_INTERFACE: Interface descriptor */
243 struct usb_interface_descriptor {
244 __u8 bLength;
245 __u8 bDescriptorType;
246
247 __u8 bInterfaceNumber;
248 __u8 bAlternateSetting;
249 __u8 bNumEndpoints;
250 __u8 bInterfaceClass;
251 __u8 bInterfaceSubClass;
252 __u8 bInterfaceProtocol;
253 __u8 iInterface;
254 } __attribute__ ((packed));
struct usb_host_endpoint的定义,来自include/linux/usb.h:
43 /* host-side wrapper for parsed endpoint descriptors */
44 struct usb_host_endpoint {
45 struct usb_endpoint_descriptor desc;
46
47 unsigned char *extra; /* Extra descriptors */
48 int extralen;
49 };
struct usb_endpoint_descriptor的结构体指针.顾名思义,这就是对应endpoint的
描述符的.其定义来自于include/linux/usb_ch9.h:
260 /* USB_DT_ENDPOINT: Endpoint descriptor */
261 struct usb_endpoint_descriptor {
262 __u8 bLength;
263 __u8 bDescriptorType;
264
265 __u8 bEndpointAddress;
266 __u8 bmAttributes;
267 __u16 wMaxPacketSize;
268 __u8 bInterval;
269
270 // NOTE: these two are _only_ in audio endpoints.
271 // use USB_DT_ENDPOINT*_SIZE in bLength, not sizeof.
272 __u8 bRefresh;
273 __u8 bSynchAddress;
274 } __attribute__ ((packed));
struct usb_endpoint_descriptor,它的成员中, bmAttributes表示属性,总共8位,其中bit1
和bit0共同称为Transfer Type,即传输类型,即00表示控制,01表示等时,10表示批量,11
表示中断.而
719行我们看到, USB_ENDPOINT_XFERTYPE_MASK这个宏定义于include/linux/usb_ch9.h中:
286 #define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */
287 #define USB_ENDPOINT_XFER_CONTROL 0
288 #define USB_ENDPOINT_XFER_ISOC 1
289 #define USB_ENDPOINT_XFER_BULK 2
290 #define USB_ENDPOINT_XFER_INT 3
USB_DIR_IN仍然来自
include/linux/usb_ch9.h
* USB directions 57
27 *
28 * This bit flag is used in endpoint descriptors' bEndpointAddress field.
29 * It's also one of three fields in control requests bRequestType.
30 */
31 #define USB_DIR_OUT 0 /* to device */
32 #define USB_DIR_IN 0x80 /* to host */
68页
include/linux/usb.h
779 struct urb
780 {
781 /* private, usb core and host controller only fields in the urb */
782 struct kref kref; /* reference count of the URB */
783 spinlock_t lock; /* lock for the URB */
784 void *hcpriv; /* private data for host controller */
785 struct list_head urb_list; /* list pointer to all active urbs */
786 int bandwidth; /* bandwidth for INT/ISO request */
787 atomic_t use_count; /* concurrent submissions counter */
788 u8 reject; /* submissions will fail */
789
790 /* public, documented fields in the urb that can be used by drivers */
791 struct usb_device *dev; /* (in) pointer to associated device */
792 unsigned int pipe; /* (in) pipe information */
793 int status; /* (return) non-ISO status */
794 unsigned int transfer_flags; /* (in) URB_SHORT_NOT_OK | ...*/
795 void *transfer_buffer; /* (in) associated data buffer */
796 dma_addr_t transfer_dma; /* (in) dma addr for transfer_buffer */
797 int transfer_buffer_length; /* (in) data buffer length */
798 int actual_length; /* (return) actual transfer length */
799 unsigned char *setup_packet; /* (in) setup packet (control only) */
800 dma_addr_t setup_dma; /* (in) dma addr for setup_packet */
801 int start_frame; /* (modify) start frame (ISO) */
802 int number_of_packets; /* (in) number of ISO packets */
803 int interval; /* (modify) transfer interval (INT/ISO) */
804 int error_count; /* (return) number of ISO errors */
805 void *context; /* (in) context for completion */
806 usb_complete_t complete; /* (in) completion routine */
807 struct usb_iso_packet_descriptor iso_frame_desc[0]; /* (in) ISO ONLY
*/
808 };
drivers/usb/storage/usb.h:
105 /* we allocate one of these for every device that we remember */
106 struct us_data {
107 /* The device we're working with
108 * It's important to note:
109 * (o) you must hold dev_semaphore to change pusb_dev
110 */
111 struct semaphore dev_semaphore; /* protect pusb_dev */
112 struct usb_device *pusb_dev; /* this usb_device */
113 struct usb_interface *pusb_intf; /* this interface */
114 struct us_unusual_dev *unusual_dev; /* device-filter entry */
115 unsigned long flags; /* from filter initially */
116 unsigned int send_bulk_pipe; /* cached pipe values */
117 unsigned int recv_bulk_pipe;
118 unsigned int send_ctrl_pipe;
119 unsigned int recv_ctrl_pipe;
120 unsigned int recv_intr_pipe;
121
122 /* information about the device */
123 char vendor[USB_STOR_STRING_LEN];
124 char product[USB_STOR_STRING_LEN];
125 char serial[USB_STOR_STRING_LEN];
126 char *transport_name;
127 char *protocol_name;
128 u8 subclass;
129 u8 protocol;
130 u8 max_lun;
131
132 u8 ifnum; /* interface number */
133 u8 ep_bInterval; /* interrupt interval */
134
135 /* function pointers for this device */
136 trans_cmnd transport; /* transport function */
137 trans_reset transport_reset; /* transport device reset */
138 proto_cmnd proto_handler; /* protocol handler */
139
140 /* SCSI interfaces */
141 struct Scsi_Host *host; /* our dummy host data */
142 struct scsi_cmnd *srb; /* current srb */
143
144 /* thread information */
145 int pid; /* control thread
*/
146
147 /* control and bulk communications data */
148 struct urb *current_urb; /* USB requests */
149 struct usb_ctrlrequest *cr; /* control requests */
150 struct usb_sg_request current_sg; /* scatter-gather req. */
151 unsigned char *iobuf; /* I/O buffer */
152 dma_addr_t cr_dma; /* buffer DMA addresses */
153 dma_addr_t iobuf_dma;
154
155 /* mutual exclusion and synchronization structures */
156 struct semaphore sema; /* to sleep thread on */
157 struct completion notify; /* thread begin/end */
158 wait_queue_head_t dev_reset_wait; /* wait during reset */
159 wait_queue_head_t scsi_scan_wait; /* wait before scanning */
160 struct completion scsi_scan_done; /* scan thread end */
161
162 /* subdriver information */
163 void *extra; /* Any extra data */
164 extra_data_destructor extra_destructor;/* extra data destructor */
165 };
struct usb_ctrlrequest结构指针, usb规范
了一个控制请求的格式为一个8个字节的
数据包,
而struct usb_ctrlrequest正是专门为此而准备的8个字节的一个变量,所以控制传输中总
会用到她.她的
定义在include/linux/usb_ch9.h中:
103 struct usb_ctrlrequest {
104 __u8 bRequestType;
105 __u8 bRequest;
106 __le16 wValue;
107 __le16 wIndex; 77
108 __le16 wLength;
109 } __attribute__ ((packed)); 需要说明一点,在usb spec中,不叫cr,而叫setup packet,在struct urb里边就有这么一个名字
一样的成员,
在usb mass storage bulk only transport协议里面,规定的很清楚,要发送GET MAX LUN请求,
必须把bmRequestType设置为device to host,class,interface,同时把bRequest设置为254(FEh),
即咱们这里的0xfe,而wValue设置为0,wIndex设置为接口的编号,最后wLength设置为1.
byte0: bmRequestType,注意,在刚才咱们代码中数据结构struct ctrlrequest里边是写的 bRequestType,但是她们对应的是相同的冬冬.而之所以usb协议里写成bmRequestType,是因为她实
际上又是一个位图(m表示map),也就是说,尽管她只有1个byte,但是她仍然是当作8位来用.她的8位
的含义是:
D7: 控制传输数据传输的方向,0表示方向为主机到设备,1表示方向为设备到主机.(有时控制传
输除了发命令阶段以外,可能还有数据传输阶段,此处表示的是在数据传输那个阶段的传输方向.)
D6...5: 请求的类型,0称为
类型(Standard),1称为Class,2称为Vendor,3则是保留的,
不能使用.
D4...0: 接收者,0表示设备,1表示接口,2表示端点,3表示其它,4...31都是保留的,不能使用.
定义于include/linux/usb.h
static inline void usb_fill_control_urb (struct urb *urb,
struct usb_device *dev,
unsigned int pipe,
unsigned char *setup_packet,
void *transfer_buffer,
int buffer_length,
usb_complete_t complete,
void *context)
{
spin_lock_init(&urb->lock);
urb->dev = dev;
urb->pipe = pipe;
urb->setup_packet = setup_packet;
urb->transfer_buffer = transfer_buffer;
urb->transfer_buffer_length = buffer_length;
urb->complete = complete;
urb->context = context;
}文 - 汉语汉字 编辑词条
文,wen,从玄从爻。天地万物的信息产生出来的现象、纹路、轨迹,描绘出了阴阳二气在事物中的运行轨迹和原理。
故文即为符。上古之时,符文一体。
古者伏羲氏之王天下也,始画八卦,造书契,以代结绳(爻)之政,由是文籍生焉。--《尚书序》
依类象形,故谓之文。其后形声相益,即谓之字。--《说文》序》
仓颉造书,形立谓之文,声具谓之字。--《古今通论》
"是汉字的一个部首。本义:花纹;纹理。 (1) 象形。甲骨文此字象纹理纵横交错形。"文
(2) 同本义 [figure;veins]
文,英语念为:text、article等,从字面意思上就可以理解为文章、文字,与古今中外的各个文学著作中出现的各种文字字形密不可分。古有甲骨文、金文、小篆等,今有宋体、楷体等,都在这一方面突出了"文"的重要性。古今中外,人们对于"文"都有自己不同的认知,从大的方面来讲,它可以用于表示一个民族的文化历史,从小的方面来说它可用于用于表示单独的一个"文"字,可用于表示一段话,也可用于人物的姓氏。
折叠编辑本段基本字义
1(事物错综所造成的纹理或形象:灿若,锦。
2.刺画花纹:,身。
3(记录语言的符号:,字。,盲。以,害辞。
4(用文字记下来以及与之有关的:,凭。,艺。,体。,典。,苑。,献(指有历史价值和参考价值的图书资料)。,采(a(文辞、文艺方面的才华;b(错杂艳丽的色彩)。
5(人类劳动成果的
:,化。,物。
6(自然界的某些现象:天,。水,。
7(旧时指礼节仪式:虚,。繁,缛节(过多的礼节仪式)。
8(文华辞采,与“质”、“情”相对:,质彬彬。
9(温和:,火。,静。,雅。
10(指非军事的:,职。,治武功(指礼乐教化和军事功绩)。
11(指以古汉语为基础的书面语:552,言。,白间杂。
12(专指社会科学:,科。
13(掩饰:,过饰非。
14(量词,指旧时小铜钱:一,不名。
15(姓。
16( 皇帝谥号,经纬天地曰文;道德博闻曰文;慈惠爱民曰文;愍民惠礼曰文;赐民爵位曰文;勤学好问曰文;博闻多见曰文;忠信接礼曰文;能定典礼曰文;经邦定誉曰文;敏而好学曰文;施而中礼曰文;修德来远曰文;刚柔相济曰文;修治班制曰文;德美才秀曰文;万邦为宪、帝德运广曰文;坚强不暴曰文;徽柔懿恭曰文;圣谟丕显曰文;化成天下曰文;纯穆不已曰文;克嗣徽音曰文;敬直慈惠曰文;与贤同升曰文;绍修圣绪曰文;声教四讫曰文。如汉文帝。
折叠编辑本段字源字形
字源演变与字形比较
折叠编辑本段详细字义
〈名〉
1(右图是
“文”字的甲骨文图片,资料来源:徐无闻主编:《甲金篆隶大字典》,四川辞书出版社。1991年7月第一版。
“文”字的甲骨文字绘画的像一个正面的“大人”,寓意“大象有形”、“象形”;特别放大了胸部,并在胸部画了“心”,含义是“外界客体在心里面的整体影像、整体写真、整体素描、整体速写”。
许慎《说文解字》把“文”解释为“错画也”,意思是“对事物形象进行整体素描,笔画交错,相联相络,不可解构”,这与他说的独体为文、合体为字的话的意思是一致的。“说文解字”这个书名就表示了“文”只能“说”,而“字”则可“解”的意思。“文”是客观事物外在形象的速写,是人类进一步了解事物内在性质的基础,所以它是“字”的父母,“字”是“文”的孩子。“文”生“字”举例(以“哲”为例):先对人手摩画,其文为“手”;又对斧子摩画,其文为“斤”。以手、斤为父母,结合、生子,其子就是“折”(手和斤各代表父母的基因)。这个“折”就是许慎所谓的“字”。“字”从宀从子,“宀”表示“独立的房子”,子在其中,有“自立门户”的意思。故“字”还能与“文”或其他“字”结合,生出新“字”来。在本例,作为字的“折”与作为文的“口”结合,就生出了新的字“哲”。
2(
同本义 [figure;veins]
文,错画也。象交文。今字作纹。——东汉?许慎《说文》
五章以奉五色。——春秋?左丘明《左传?昭公二十五年》。注:“青与赤谓之文,赤与白谓之章,白与黑谓之黼,黑与青谓之黻。”
美于黼黼文章。——《荀子?非相》
茵席雕文。——《韩非子?十过》
织文鸟章,白旆央央。——《诗?小雅?六月》
斑文小鱼。——明? 刘基《诚意伯刘文成公文集》
3(又如:文驾(彩车);文斑(杂色的斑纹);文旆(有文彩的旗帜);文绣(绣有彩色花纹的丝织品;刺花图案);文织(有彩色花纹的丝织品);文鳞(鱼鳞形花纹)。
4(字,文字(“文”,在先秦时期就有文字的意思,“字”,到了秦朝才有此意。分别讲,“文”指独体字;“字”指合体字。笼统地说,都泛指文字。) [character]
饰以篆文。——南朝宋?范晔《后汉书?张衡传》
分文析字。——东汉?班固《汉书?刘歆传》
夫文,止戈为武。——《左传?宣公十二年》
距洞数百步,有碑仆道,其文漫灭。——王安石《游褒禅山记》
文曰“天启壬戌秋日”。——明? 魏学洢《核舟记》
文曰“初平山尺”。
5(又如:甲骨文;金文;汉文;英文;文迹(文字所记载的事迹);文书爻(有关文字、文凭之类的卦象);文异(文字相异);文轨(文字和车轨);文狱(文字狱);文钱(钱。因钱有文字,故称);文状(字据,军令状);文引(通行证;路凭);文定(定婚)。
6(文章(遣造的词句叫做“文”,结构段落叫做 “章”。) [literary composition]
故说诗者不以文害辞。——《孟子?万章上》
好古文。——唐? 韩愈《师说》
属予作文以记之。——宋? 范仲淹《岳阳楼记》
能述以文。——宋? 欧阳修《醉翁亭记》
摘其诗文。——清? 纪昀《阅微草堂笔记》
7(又如:文价(文章的声誉);文魔(书呆子);文会(旧时读书人为了准备应试,在一起写文章、互相观摩的集会);文移(旧时官府文书的代称);文雄(擅长写文章的大作家);文意(文章的旨趣);文义(文章的义理);文情(文章的词句和情思);本文(所指的这篇文章);作文(写文章;学习练习所写的文章);文魁(文章魁首);文价(文章的声价);文什(文章与诗篇)。
8(美德;文德 [virtue]
圣云继之神,神乃用文治。——杜牧《感怀诗一首》
9(又如:文丈(对才高德韶的老者的敬称);文母(文德之母);文武(文德与武功);文命(文德教命);文惠(文德恩惠);文德(写文章的道德);文薄(谓文德浅薄);文昭(文德昭著)。
10.文才;才华。亦谓有文才,有才华 [literary talent]
而文采不表于后世也。——汉? 司马迁《报任安书》
11(又如:文业(才学);文英(文才出众的人);文采风流(横溢的才华与潇洒的风度);文郎(有才华的青少年);文彦(有文才德行的人);文通残锦(比喻剩下不多的才华)。
12(文献,经典;韵文 [document;classics;verse]
儒以文乱法。——《韩非子?五蠹》
言必遵修旧文而不穿凿。——《说文解字?叙》
13(辞词句。亦指文字记载 [writings;record]。如:文几(旧时书信中开头常用的套语。意为将书信呈献于几前);文倒(文句颠倒);文过其实(文辞浮夸,不切实际);文义(文辞);文辞(言词动听的辞令);文绣(辞藻华丽)。
14(自然界的某些现象 [natural phenomenon]
经纬天地曰文。——《左传?昭公二十八年》
15(又如:天文;地文;水文;文象(日月星辰变化的迹象);文曜(指日月星辰;文星);文昌(星座名)。
16(文治;文事;文职。与“武”相对。 [achievements in culture and education;civilian post]
文能取胜。——《史记?平原君虞卿列传》
文不能取胜。
文武并用。——唐? 魏征《谏太宗十思疏》
精神折冲于千里,文武为宪于万邦。――明《袁可立晋秩兵部右侍郎诰》
17(又如:文臣,文吏(文职官吏);文席(教书先生的几席);文品(文官的品阶);文帅(文职官员出任或兼领统帅);文烈(文治显赫);文员(文职吏员);文阶(文职官阶);文道(文治之道);文业(文事);文僚(文职官吏)。
18(法令条文 [articles of decree]
而刀笔吏专深文巧诋,陷人于罪。——《史记?汲黯列传》
19(又如:文劾(根据律令弹劾);文法吏(通晓法令、执法严峻的官吏);文丈(规矩;
);文移(官府文书);文牓(布告;文告);文宪(礼法;法制)。
20(文言。古代散文文体之一;别于白话的古汉语书面语 [literary language]。如:半文半白;文语;文白(文言文和白话文)。
21(文教;礼节仪式 [rites]
则修文德。——《论语?季氏》
22(又如:文丈(崇尚礼文仪节);文俗(拘守礼法而安于习俗);文致(指礼乐);文貌(礼文仪节);文绪(文教礼乐之事);文仪(礼节仪式)
23(指表现形式;外表 [form;appearance]。如:文服(表面服从);文榜(告示、布告之类);
文诰(诰令)
24(指鼓乐,泛指曲调 [music;tune]。如:文曲(指乐曲);文始(舞乐名)
25(谥号,谥法:勤学好问叫文 [study deligently]
何以谓之文。——《论语》
是以谓之文。
26(姓
〈动〉
1(在肌肤上刺画花纹或图案 [tatto (the skin)]
被发文身。——《礼记?王制》。注:“谓其肌,以丹青涅之。”
文绣有恒。——《礼记?月令》
2(又如:文笔匠(在人身上刺花的艺人);文身断发(古代荆楚、南越一带的习俗。身刺花纹,截短头发,以为可避水中蛟龙的伤害。后常以指落后地区的民俗);文木(刻镂以文采之木)
3(修饰;文饰 [cover up]
身将隐,焉用文之?——《左传?僖公二十三年》
饰邪说,文奸言,以枭乱天下。——《荀子?非十二子》
4(又如:文过饰非;文致(粉饰;掩饰);文冢(埋葬文稿之处)
5(装饰 [decorate]
舍其文轩。——《墨子?公输》
此犹文奸。
文车二驷。——明? 归有光《项脊轩志》
文马四百匹。——《史记?宋世家》
若将比予文木邪。——《庄子?人间世》
6(又如:文巧(文饰巧辩);文竿(以翠羽为饰之竿);文舫(装饰华丽的游艇);文饰(彩饰);
文榭(饰以彩画的台榭);文舟,文艘(装饰华丽的船);文剑(装饰华丽的剑);文舆(饰以彩绘的车)
7(撰写文章 [write]。如:文匠(写文章的大家);文祸(因写文章而招来的灾祸);文雄,文杰(指文豪)
〈形〉
1(有文采,华丽。与“质”或“野”相对 [magnificent;gorgeous]
其旨远,其辞文。——《易?系辞下》
晋公子广而俭,文而有礼。——《左传?僖公二十三年》
2(又如:文巧(华丽奇巧);文朴(文华与质朴);文服(华美的衣服);文砌(华美的石阶);文背(不文雅,粗俗);文轩(华美的车子);文质(文华与质朴)
3.柔和,不猛烈 [mild;gentle]。如:文烈(指火候温猛)
4(美,善 [fine;good]。如:文徽(华美);文鸳(即鸳鸯。以其羽毛华美,故称);文衣(华
美的服装)
5(通“紊”。紊乱的 [disordered]
惇宗将礼,称秩元祀,咸秩无文。——《书?洛诰》
天子祭天下名山大川,怀柔百神,咸秩无文。——《汉书?郊祀志上》
王者报功,以次秩之,无有文也。——庆劭《风俗通义?山泽》
〈量〉
1(用于旧时的铜钱。如:一文钱
2(用于计算纺织物
五扶为一首,五首成一文。——《后汉书》