日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【一】 sched.h

發(fā)布時間:2023/12/13 综合教程 52 生活家
生活随笔 收集整理的這篇文章主要介紹了 【一】 sched.h 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

第一個數(shù)據(jù)結(jié)構(gòu)體是task_struct ,這個數(shù)據(jù)結(jié)構(gòu)被內(nèi)核用來表示進(jìn)程,包含其所有信息。

定義于文件include/linux/sched.h 中,先看看其完整定義

  1 struct task_struct {
  2     volatile long state;    /* -1 unrunnable, 0 runnable, >0 stopped */
  3     void *stack;
  4     atomic_t usage;
  5     unsigned int flags;    /* per process flags, defined below */
  6     unsigned int ptrace;
  7 
  8 #ifdef CONFIG_SMP
  9     struct llist_node wake_entry;
 10     int on_cpu;
 11 #endif
 12     int on_rq;
 13 
 14     int prio, static_prio, normal_prio;
 15     unsigned int rt_priority;
 16     const struct sched_class *sched_class;
 17     struct sched_entity se;
 18     struct sched_rt_entity rt;
 19 #ifdef CONFIG_CGROUP_SCHED
 20     struct task_group *sched_task_group;
 21 #endif
 22 
 23 #ifdef CONFIG_PREEMPT_NOTIFIERS
 24     /* list of struct preempt_notifier: */
 25     struct hlist_head preempt_notifiers;
 26 #endif
 27 
 28     /*
 29      * fpu_counter contains the number of consecutive context switches
 30      * that the FPU is used. If this is over a threshold, the lazy fpu
 31      * saving becomes unlazy to save the trap. This is an unsigned char
 32      * so that after 256 times the counter wraps and the behavior turns
 33      * lazy again; this to deal with bursty apps that only use FPU for
 34      * a short time
 35      */
 36     unsigned char fpu_counter;
 37 #ifdef CONFIG_BLK_DEV_IO_TRACE
 38     unsigned int btrace_seq;
 39 #endif
 40 
 41     unsigned int policy;
 42     int nr_cpus_allowed;
 43     cpumask_t cpus_allowed;
 44 
 45 #ifdef CONFIG_PREEMPT_RCU
 46     int rcu_read_lock_nesting;
 47     char rcu_read_unlock_special;
 48     struct list_head rcu_node_entry;
 49 #endif /* #ifdef CONFIG_PREEMPT_RCU */
 50 #ifdef CONFIG_TREE_PREEMPT_RCU
 51     struct rcu_node *rcu_blocked_node;
 52 #endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */
 53 #ifdef CONFIG_RCU_BOOST
 54     struct rt_mutex *rcu_boost_mutex;
 55 #endif /* #ifdef CONFIG_RCU_BOOST */
 56 
 57 #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT)
 58     struct sched_info sched_info;
 59 #endif
 60 
 61     struct list_head tasks;
 62 #ifdef CONFIG_SMP
 63     struct plist_node pushable_tasks;
 64 #endif
 65 
 66     struct mm_struct *mm, *active_mm;
 67 #ifdef CONFIG_COMPAT_BRK
 68     unsigned brk_randomized:1;
 69 #endif
 70 #if defined(SPLIT_RSS_COUNTING)
 71     struct task_rss_stat    rss_stat;
 72 #endif
 73 /* task state */
 74     int exit_state;
 75     int exit_code, exit_signal;
 76     int pdeath_signal;  /*  The signal sent when the parent dies  */
 77     unsigned int jobctl;    /* JOBCTL_*, siglock protected */
 78 
 79     /* Used for emulating ABI behavior of previous Linux versions */
 80     unsigned int personality;
 81 
 82     unsigned did_exec:1;
 83     unsigned in_execve:1;    /* Tell the LSMs that the process is doing an
 84                  * execve */
 85     unsigned in_iowait:1;
 86 
 87     /* Revert to default priority/policy when forking */
 88     unsigned sched_reset_on_fork:1;
 89     unsigned sched_contributes_to_load:1;
 90 
 91     unsigned long atomic_flags; /* Flags needing atomic access. */
 92 
 93     pid_t pid;
 94     pid_t tgid;
 95 
 96 #ifdef CONFIG_CC_STACKPROTECTOR
 97     /* Canary value for the -fstack-protector gcc feature */
 98     unsigned long stack_canary;
 99 #endif
100     /*
101      * pointers to (original) parent process, youngest child, younger sibling,
102      * older sibling, respectively.  (p->father can be replaced with
103      * p->real_parent->pid)
104      */
105     struct task_struct __rcu *real_parent; /* real parent process */
106     struct task_struct __rcu *parent; /* recipient of SIGCHLD, wait4() reports */
107     /*
108      * children/sibling forms the list of my natural children
109      */
110     struct list_head children;    /* list of my children */
111     struct list_head sibling;    /* linkage in my parent's children list */
112     struct task_struct *group_leader;    /* threadgroup leader */
113 
114 #ifdef CONFIG_MTK_SCHED_CMP_TGS
115     raw_spinlock_t thread_group_info_lock;
116     struct thread_group_info_t thread_group_info[NUM_CLUSTER];
117 #endif
118 
119     /*
120      * ptraced is the list of tasks this task is using ptrace on.
121      * This includes both natural children and PTRACE_ATTACH targets.
122      * p->ptrace_entry is p's link on the p->parent->ptraced list.
123      */
124     struct list_head ptraced;
125     struct list_head ptrace_entry;
126 
127     /* PID/PID hash table linkage. */
128     struct pid_link pids[PIDTYPE_MAX];
129     struct list_head thread_group;
130     struct list_head thread_node;
131 
132     struct completion *vfork_done;        /* for vfork() */
133     int __user *set_child_tid;        /* CLONE_CHILD_SETTID */
134     int __user *clear_child_tid;        /* CLONE_CHILD_CLEARTID */
135 
136     cputime_t utime, stime, utimescaled, stimescaled;
137     cputime_t gtime;
138 #ifndef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
139     struct cputime prev_cputime;
140 #endif
141 #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
142     seqlock_t vtime_seqlock;
143     unsigned long long vtime_snap;
144     enum {
145         VTIME_SLEEPING = 0,
146         VTIME_USER,
147         VTIME_SYS,
148     } vtime_snap_whence;
149 #endif
150     unsigned long nvcsw, nivcsw; /* context switch counts */
151     struct timespec start_time;         /* monotonic time */
152     struct timespec real_start_time;    /* boot based time */
153 /* mm fault and swap info: this can arguably be seen as either mm-specific or thread-specific */
154     unsigned long min_flt, maj_flt;
155 /* for thrashing accounting */
156 #ifdef CONFIG_ZRAM
157     unsigned long fm_flt, swap_in, swap_out;
158 #endif
159 
160     struct task_cputime cputime_expires;
161     struct list_head cpu_timers[3];
162 
163 /* process credentials */
164     const struct cred __rcu *real_cred; /* objective and real subjective task
165                      * credentials (COW) */
166     const struct cred __rcu *cred;    /* effective (overridable) subjective task
167                      * credentials (COW) */
168     char comm[TASK_COMM_LEN]; /* executable name excluding path
169                      - access with [gs]et_task_comm (which lock
170                        it with task_lock())
171                      - initialized normally by setup_new_exec */
172 /* file system info */
173     int link_count, total_link_count;
174 #ifdef CONFIG_SYSVIPC
175 /* ipc stuff */
176     struct sysv_sem sysvsem;
177 #endif
178 #ifdef CONFIG_DETECT_HUNG_TASK
179 /* hung task detection */
180     unsigned long last_switch_count;
181 #endif
182 /* CPU-specific state of this task */
183     struct thread_struct thread;
184 /* filesystem information */
185     struct fs_struct *fs;
186 /* open file information */
187     struct files_struct *files;
188 /* namespaces */
189     struct nsproxy *nsproxy;
190 /* signal handlers */
191     struct signal_struct *signal;
192     struct sighand_struct *sighand;
193 
194     sigset_t blocked, real_blocked;
195     sigset_t saved_sigmask;    /* restored if set_restore_sigmask() was used */
196     struct sigpending pending;
197 
198     unsigned long sas_ss_sp;
199     size_t sas_ss_size;
200     int (*notifier)(void *priv);
201     void *notifier_data;
202     sigset_t *notifier_mask;
203     struct callback_head *task_works;
204 
205     struct audit_context *audit_context;
206 #ifdef CONFIG_AUDITSYSCALL
207     kuid_t loginuid;
208     unsigned int sessionid;
209 #endif
210     struct seccomp seccomp;
211 
212 /* Thread group tracking */
213        u32 parent_exec_id;
214        u32 self_exec_id;
215 /* Protection of (de-)allocation: mm, files, fs, tty, keyrings, mems_allowed,
216  * mempolicy */
217     spinlock_t alloc_lock;
218 
219     /* Protection of the PI data structures: */
220     raw_spinlock_t pi_lock;
221 
222 #ifdef CONFIG_RT_MUTEXES
223     /* PI waiters blocked on a rt_mutex held by this task */
224     struct plist_head pi_waiters;
225     /* Deadlock detection and priority inheritance handling */
226     struct rt_mutex_waiter *pi_blocked_on;
227 #endif
228 
229 #ifdef CONFIG_DEBUG_MUTEXES
230     /* mutex deadlock detection */
231     struct mutex_waiter *blocked_on;
232 #endif
233 #ifdef CONFIG_TRACE_IRQFLAGS
234     unsigned int irq_events;
235     unsigned long hardirq_enable_ip;
236     unsigned long hardirq_disable_ip;
237     unsigned int hardirq_enable_event;
238     unsigned int hardirq_disable_event;
239     int hardirqs_enabled;
240     int hardirq_context;
241     unsigned long softirq_disable_ip;
242     unsigned long softirq_enable_ip;
243     unsigned int softirq_disable_event;
244     unsigned int softirq_enable_event;
245     int softirqs_enabled;
246     int softirq_context;
247 #endif
248 #ifdef CONFIG_LOCKDEP
249 # define MAX_LOCK_DEPTH 48UL
250     u64 curr_chain_key;
251     int lockdep_depth;
252     unsigned int lockdep_recursion;
253     struct held_lock held_locks[MAX_LOCK_DEPTH];
254     gfp_t lockdep_reclaim_gfp;
255 #endif
256 
257 /* journalling filesystem info */
258     void *journal_info;
259 
260 /* stacked block device info */
261     struct bio_list *bio_list;
262 
263 #ifdef CONFIG_BLOCK
264 /* stack plugging */
265     struct blk_plug *plug;
266 #endif
267 
268 /* VM state */
269     struct reclaim_state *reclaim_state;
270 
271     struct backing_dev_info *backing_dev_info;
272 
273     struct io_context *io_context;
274 
275     unsigned long ptrace_message;
276     siginfo_t *last_siginfo; /* For ptrace use.  */
277     struct task_io_accounting ioac;
278 #if defined(CONFIG_TASK_XACCT)
279     u64 acct_rss_mem1;    /* accumulated rss usage */
280     u64 acct_vm_mem1;    /* accumulated virtual memory usage */
281     cputime_t acct_timexpd;    /* stime + utime since last update */
282 #endif
283 #ifdef CONFIG_CPUSETS
284     nodemask_t mems_allowed;    /* Protected by alloc_lock */
285     seqcount_t mems_allowed_seq;    /* Seqence no to catch updates */
286     int cpuset_mem_spread_rotor;
287     int cpuset_slab_spread_rotor;
288 #endif
289 #ifdef CONFIG_CGROUPS
290     /* Control Group info protected by css_set_lock */
291     struct css_set __rcu *cgroups;
292     /* cg_list protected by css_set_lock and tsk->alloc_lock */
293     struct list_head cg_list;
294 #endif
295 #ifdef CONFIG_FUTEX
296     struct robust_list_head __user *robust_list;
297 #ifdef CONFIG_COMPAT
298     struct compat_robust_list_head __user *compat_robust_list;
299 #endif
300     struct list_head pi_state_list;
301     struct futex_pi_state *pi_state_cache;
302 #endif
303 #ifdef CONFIG_PERF_EVENTS
304     struct perf_event_context *perf_event_ctxp[perf_nr_task_contexts];
305     struct mutex perf_event_mutex;
306     struct list_head perf_event_list;
307 #endif
308 #ifdef CONFIG_NUMA
309     struct mempolicy *mempolicy;    /* Protected by alloc_lock */
310     short il_next;
311     short pref_node_fork;
312 #endif
313 #ifdef CONFIG_NUMA_BALANCING
314     int numa_scan_seq;
315     int numa_migrate_seq;
316     unsigned int numa_scan_period;
317     u64 node_stamp;            /* migration stamp  */
318     struct callback_head numa_work;
319 #endif /* CONFIG_NUMA_BALANCING */
320 
321     struct rcu_head rcu;
322 
323     /*
324      * cache last used pipe for splice
325      */
326     struct pipe_inode_info *splice_pipe;
327 
328     struct page_frag task_frag;
329 
330 #ifdef    CONFIG_TASK_DELAY_ACCT
331     struct task_delay_info *delays;
332 #endif
333 #ifdef CONFIG_FAULT_INJECTION
334     int make_it_fail;
335 #endif
336     /*
337      * when (nr_dirtied >= nr_dirtied_pause), it's time to call
338      * balance_dirty_pages() for some dirty throttling pause
339      */
340     int nr_dirtied;
341     int nr_dirtied_pause;
342     unsigned long dirty_paused_when; /* start of a write-and-pause period */
343 
344 #ifdef CONFIG_LATENCYTOP
345     int latency_record_count;
346     struct latency_record latency_record[LT_SAVECOUNT];
347 #endif
348     /*
349      * time slack values; these are used to round up poll() and
350      * select() etc timeout values. These are in nanoseconds.
351      */
352     unsigned long timer_slack_ns;
353     unsigned long default_timer_slack_ns;
354 
355 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
356     /* Index of current stored address in ret_stack */
357     int curr_ret_stack;
358     /* Stack of return addresses for return function tracing */
359     struct ftrace_ret_stack    *ret_stack;
360     /* time stamp for last schedule */
361     unsigned long long ftrace_timestamp;
362     /*
363      * Number of functions that haven't been traced
364      * because of depth overrun.
365      */
366     atomic_t trace_overrun;
367     /* Pause for the tracing */
368     atomic_t tracing_graph_pause;
369 #endif
370 #ifdef CONFIG_TRACING
371     /* state flags for use by tracers */
372     unsigned long trace;
373     /* bitmask and counter of trace recursion */
374     unsigned long trace_recursion;
375 #endif /* CONFIG_TRACING */
376 #ifdef CONFIG_MEMCG /* memcg uses this to do batch job */
377     struct memcg_batch_info {
378         int do_batch;    /* incremented when batch uncharge started */
379         struct mem_cgroup *memcg; /* target memcg of uncharge */
380         unsigned long nr_pages;    /* uncharged usage */
381         unsigned long memsw_nr_pages; /* uncharged mem+swap usage */
382     } memcg_batch;
383     unsigned int memcg_kmem_skip_account;
384     struct memcg_oom_info {
385         struct mem_cgroup *memcg;
386         gfp_t gfp_mask;
387         int order;
388         unsigned int may_oom:1;
389     } memcg_oom;
390 #endif
391 #ifdef CONFIG_HAVE_HW_BREAKPOINT
392     atomic_t ptrace_bp_refcnt;
393 #endif
394 #ifdef CONFIG_UPROBES
395     struct uprobe_task *utask;
396 #endif
397 #if defined(CONFIG_BCACHE) || defined(CONFIG_BCACHE_MODULE)
398     unsigned int    sequential_io;
399     unsigned int    sequential_io_avg;
400 #endif
401 };

下面一個結(jié)構(gòu)一個結(jié)構(gòu)的看

1. volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */

當(dāng)前進(jìn)程的狀態(tài),由以下宏定義

 1 /*
 2  * Task state bitmask. NOTE! These bits are also
 3  * encoded in fs/proc/array.c: get_task_state().
 4  *
 5  * We have two separate sets of flags: task->state
 6  * is about runnability, while task->exit_state are
 7  * about the task exiting. Confusing, but this way
 8  * modifying one set can't modify the other one by
 9  * mistake.
10  */
11 #define TASK_RUNNING        0
12 #define TASK_INTERRUPTIBLE    1
13 #define TASK_UNINTERRUPTIBLE    2
14 #define __TASK_STOPPED        4
15 #define __TASK_TRACED        8
16 /* in tsk->exit_state */
17 #define EXIT_ZOMBIE        16
18 #define EXIT_DEAD        32
19 /* in tsk->state again */
20 #define TASK_DEAD        64
21 #define TASK_WAKEKILL        128
22 #define TASK_WAKING        256
23 #define TASK_PARKED        512
24 #define TASK_STATE_MAX        1024

宏定義還包含了exit state的狀態(tài)

還有以下組合宏,以方便使用

 1 /* Convenience macros for the sake of set_task_state */
 2 #define TASK_KILLABLE        (TASK_WAKEKILL | TASK_UNINTERRUPTIBLE)
 3 #define TASK_STOPPED        (TASK_WAKEKILL | __TASK_STOPPED)
 4 #define TASK_TRACED        (TASK_WAKEKILL | __TASK_TRACED)
 5 
 6 /* Convenience macros for the sake of wake_up */
 7 #define TASK_NORMAL        (TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE)
 8 #define TASK_ALL        (TASK_NORMAL | __TASK_STOPPED | __TASK_TRACED)
 9 
10 /* get_task_state() */
11 #define TASK_REPORT        (TASK_RUNNING | TASK_INTERRUPTIBLE | 
12                  TASK_UNINTERRUPTIBLE | __TASK_STOPPED | 
13                  __TASK_TRACED)

判斷task狀態(tài)的宏

1 #define task_is_traced(task)    ((task->state & __TASK_TRACED) != 0)
2 #define task_is_stopped(task)    ((task->state & __TASK_STOPPED) != 0)
3 #define task_is_dead(task)    ((task)->exit_state != 0)
4 #define task_is_stopped_or_traced(task)    
5             ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0)
6 #define task_contributes_to_load(task)    
7                 ((task->state & TASK_UNINTERRUPTIBLE) != 0 && 
8                  (task->flags & PF_FROZEN) == 0)

設(shè)置task state的宏,分為mb順序執(zhí)行版本和讀寫內(nèi)存操作亂序執(zhí)行版本

 1 #define __set_task_state(tsk, state_value)        
 2     do { (tsk)->state = (state_value); } while (0)
 3 #define set_task_state(tsk, state_value)        
 4     set_mb((tsk)->state, (state_value))
 5 
 6 /*
 7  * set_current_state() includes a barrier so that the write of current->state
 8  * is correctly serialised wrt the caller's subsequent test of whether to
 9  * actually sleep:
10  *
11  *    set_current_state(TASK_UNINTERRUPTIBLE);
12  *    if (do_i_need_to_sleep())
13  *        schedule();
14  *
15  * If the caller does not need such serialisation then use __set_current_state()
16  */
17 #define __set_current_state(state_value)            
18     do { current->state = (state_value); } while (0)
19 #define set_current_state(state_value)        
20     set_mb(current->state, (state_value))

task command名長度宏

1 /* Task command name length */
2 #define TASK_COMM_LEN 16

下邊這兩個不知道干什么用的

1 #define TASK_STATE_TO_CHAR_STR "RSDTtZXxKWP"
2 
3 extern char ___assert_task_state[1 - 2*!!(
4         sizeof(TASK_STATE_TO_CHAR_STR)-1 != ilog2(TASK_STATE_MAX)+1)];

2. void *stack;

指明進(jìn)程stack地址

3. atomic_t usage;

fork里邊用到,但暫時不知道作用

4. unsigned int flags; /* per process flags, defined below */

每個進(jìn)程的flag,定義如下

/*
 * Per process flags
 */
#define PF_EXITING    0x00000004    /* getting shut down */
#define PF_EXITPIDONE    0x00000008    /* pi exit done on shut down */
#define PF_VCPU        0x00000010    /* I'm a virtual CPU */
#define PF_WQ_WORKER    0x00000020    /* I'm a workqueue worker */
#define PF_FORKNOEXEC    0x00000040    /* forked but didn't exec */
#define PF_MCE_PROCESS  0x00000080      /* process policy on mce errors */
#define PF_SUPERPRIV    0x00000100    /* used super-user privileges */
#define PF_DUMPCORE    0x00000200    /* dumped core */
#define PF_SIGNALED    0x00000400    /* killed by a signal */
#define PF_MEMALLOC    0x00000800    /* Allocating memory */
#define PF_NPROC_EXCEEDED 0x00001000    /* set_user noticed that RLIMIT_NPROC was exceeded */
#define PF_USED_MATH    0x00002000    /* if unset the fpu must be initialized before use */
#define PF_USED_ASYNC    0x00004000    /* used async_schedule*(), used by module init */
#define PF_NOFREEZE    0x00008000    /* this thread should not be frozen */
#define PF_FROZEN    0x00010000    /* frozen for system suspend */
#define PF_FSTRANS    0x00020000    /* inside a filesystem transaction */
#define PF_KSWAPD    0x00040000    /* I am kswapd */
#define PF_MEMALLOC_NOIO 0x00080000    /* Allocating memory without IO involved */
#define PF_LESS_THROTTLE 0x00100000    /* Throttle me less: I clean memory */
#define PF_KTHREAD    0x00200000    /* I am a kernel thread */
#define PF_RANDOMIZE    0x00400000    /* randomize virtual address space */
#define PF_SWAPWRITE    0x00800000    /* Allowed to write to swap */
#define PF_SPREAD_PAGE    0x01000000    /* Spread page cache over cpuset */
#define PF_SPREAD_SLAB    0x02000000    /* Spread some slab caches over cpuset */
#define PF_NO_SETAFFINITY 0x04000000    /* Userland is not allowed to meddle with cpus_allowed */
#define PF_MCE_EARLY    0x08000000      /* Early kill for mce process policy */
#define PF_MEMPOLICY    0x10000000    /* Non-default NUMA mempolicy */
#define PF_MUTEX_TESTER    0x20000000    /* Thread belongs to the rt mutex tester */
#define PF_FREEZER_SKIP    0x40000000    /* Freezer should not count it as freezable */
#define PF_MTKPASR    0x80000000    /* I am in MTKPASR process */

下邊的宏操作flag,mtk的定制flag和fpu的使用有關(guān),包括了current和非current的

 1 #define task_in_mtkpasr(task)    unlikely(task->flags & PF_MTKPASR)
 2 
 3 /*
 4  * Only the _current_ task can read/write to tsk->flags, but other
 5  * tasks can access tsk->flags in readonly mode for example
 6  * with tsk_used_math (like during threaded core dumping).
 7  * There is however an exception to this rule during ptrace
 8  * or during fork: the ptracer task is allowed to write to the
 9  * child->flags of its traced child (same goes for fork, the parent
10  * can write to the child->flags), because we're guaranteed the
11  * child is not running and in turn not changing child->flags
12  * at the same time the parent does it.
13  */
14 #define clear_stopped_child_used_math(child) do { (child)->flags &= ~PF_USED_MATH; } while (0)
15 #define set_stopped_child_used_math(child) do { (child)->flags |= PF_USED_MATH; } while (0)
16 #define clear_used_math() clear_stopped_child_used_math(current)
17 #define set_used_math() set_stopped_child_used_math(current)
18 #define conditional_stopped_child_used_math(condition, child) 
19     do { (child)->flags &= ~PF_USED_MATH, (child)->flags |= (condition) ? PF_USED_MATH : 0; } while (0)
20 #define conditional_used_math(condition) 
21     conditional_stopped_child_used_math(condition, current)
22 #define copy_to_stopped_child_used_math(child) 
23     do { (child)->flags &= ~PF_USED_MATH, (child)->flags |= current->flags & PF_USED_MATH; } while (0)
24 /* NOTE: this will return 0 or PF_USED_MATH, it will never return 1 */
25 #define tsk_used_math(p) ((p)->flags & PF_USED_MATH)
26 #define used_math() tsk_used_math(current)

memory alloc no io相關(guān)的操作

 1 /* __GFP_IO isn't allowed if PF_MEMALLOC_NOIO is set in current->flags
 2  * __GFP_FS is also cleared as it implies __GFP_IO.
 3  */
 4 static inline gfp_t memalloc_noio_flags(gfp_t flags)
 5 {
 6     if (unlikely(current->flags & PF_MEMALLOC_NOIO))
 7         flags &= ~(__GFP_IO | __GFP_FS);
 8     return flags;
 9 }
10 
11 static inline unsigned int memalloc_noio_save(void)
12 {
13     unsigned int flags = current->flags & PF_MEMALLOC_NOIO;
14     current->flags |= PF_MEMALLOC_NOIO;
15     return flags;
16 }
17 
18 static inline void memalloc_noio_restore(unsigned int flags)
19 {
20     current->flags = (current->flags & ~PF_MEMALLOC_NOIO) | flags;
21 }

5. unsigned int ptrace;

跟ptrace相關(guān),目前不知道怎么用

6.

1 #ifdef CONFIG_SMP
2     struct llist_node wake_entry;

被喚醒對象的linked list

7.

1     int on_cpu;
2 #endif

進(jìn)程跑在哪個CPU上

8. int on_rq;

不清楚

9. 10. 11. int prio, static_prio, normal_prio;

進(jìn)程的優(yōu)先級

12. unsigned int rt_priority;

實時優(yōu)先級

13. const struct sched_class *sched_class;

調(diào)度類別

14. struct sched_entity se;

調(diào)度實體

15. struct sched_rt_entity rt;

實時調(diào)度實體

16.

1 #ifdef CONFIG_CGROUP_SCHED
2     struct task_group *sched_task_group;
3 #endif

調(diào)度任務(wù)組

17.

1 #ifdef CONFIG_PREEMPT_NOTIFIERS
2     /* list of struct preempt_notifier: */
3     struct hlist_head preempt_notifiers;
4 #endif

搶占通知hlist,MTK沒定義宏CONFIG_PREEMPT_NOTIFIERS

18.

1     /*
2      * fpu_counter contains the number of consecutive context switches
3      * that the FPU is used. If this is over a threshold, the lazy fpu
4      * saving becomes unlazy to save the trap. This is an unsigned char
5      * so that after 256 times the counter wraps and the behavior turns
6      * lazy again; this to deal with bursty apps that only use FPU for
7      * a short time
8      */
9     unsigned char fpu_counter;

不清楚

19.

1 #ifdef CONFIG_BLK_DEV_IO_TRACE
2     unsigned int btrace_seq;
3 #endif

不清楚

20. unsigned int policy;

策略

21. int nr_cpus_allowed;

允許的CPU數(shù)量

22. cpumask_t cpus_allowed;

不清楚,類型cpumask_t 要看

23.

1 #ifdef CONFIG_PREEMPT_RCU
2     int rcu_read_lock_nesting

rcu讀鎖的嵌套層數(shù)

24. 25.

1 char rcu_read_unlock_special;
2     struct list_head rcu_node_entry;
3 #endif /* #ifdef CONFIG_PREEMPT_RCU */

不清楚

26.

1 #ifdef CONFIG_TREE_PREEMPT_RCU
2     struct rcu_node *rcu_blocked_node;
3 #endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */

不清楚

27.

1 #ifdef CONFIG_RCU_BOOST
2     struct rt_mutex *rcu_boost_mutex;
3 #endif /* #ifdef CONFIG_RCU_BOOST */

不清楚,MTK沒定義宏CONFIG_RCU_BOOST

28.

1 #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT)
2     struct sched_info sched_info;
3 #endif

調(diào)度信息,宏CONFIG_SCHEDSTATS 和CONFIG_TASK_DELAY_ACCT 未定義

29. struct list_head tasks;

tasks列表,不知道是否為子進(jìn)程列表

30.

1 #ifdef CONFIG_SMP
2     struct plist_node pushable_tasks;
3 #endif

不清楚

31. 32 struct mm_struct *mm, *active_mm;

該進(jìn)程內(nèi)存管理的數(shù)據(jù)結(jié)構(gòu)

33.

1 #ifdef CONFIG_COMPAT_BRK
2     unsigned brk_randomized:1;
3 #endif

不清楚

34.

1 #if defined(SPLIT_RSS_COUNTING)
2     struct task_rss_stat    rss_stat;
3 #endif

不清楚

35.

1 /* task state */
2     int exit_state;

進(jìn)程退出時的狀態(tài)

36. 37. int exit_code, exit_signal;

進(jìn)程退出碼和退出信號量

38. int pdeath_signal; /* The signal sent when the parent dies */

父進(jìn)程死掉的信號量

39. unsigned int jobctl; /* JOBCTL_*, siglock protected */

job ctrl,信號鎖保護(hù)

與之相關(guān)的宏定義如下

 1 /*
 2  * task->jobctl flags
 3  */
 4 #define JOBCTL_STOP_SIGMASK    0xffff    /* signr of the last group stop */
 5 
 6 #define JOBCTL_STOP_DEQUEUED_BIT 16    /* stop signal dequeued */
 7 #define JOBCTL_STOP_PENDING_BIT    17    /* task should stop for group stop */
 8 #define JOBCTL_STOP_CONSUME_BIT    18    /* consume group stop count */
 9 #define JOBCTL_TRAP_STOP_BIT    19    /* trap for STOP */
10 #define JOBCTL_TRAP_NOTIFY_BIT    20    /* trap for NOTIFY */
11 #define JOBCTL_TRAPPING_BIT    21    /* switching to TRACED */
12 #define JOBCTL_LISTENING_BIT    22    /* ptracer is listening for events */
13 
14 #define JOBCTL_STOP_DEQUEUED    (1 << JOBCTL_STOP_DEQUEUED_BIT)
15 #define JOBCTL_STOP_PENDING    (1 << JOBCTL_STOP_PENDING_BIT)
16 #define JOBCTL_STOP_CONSUME    (1 << JOBCTL_STOP_CONSUME_BIT)
17 #define JOBCTL_TRAP_STOP    (1 << JOBCTL_TRAP_STOP_BIT)
18 #define JOBCTL_TRAP_NOTIFY    (1 << JOBCTL_TRAP_NOTIFY_BIT)
19 #define JOBCTL_TRAPPING        (1 << JOBCTL_TRAPPING_BIT)
20 #define JOBCTL_LISTENING    (1 << JOBCTL_LISTENING_BIT)
21 
22 #define JOBCTL_TRAP_MASK    (JOBCTL_TRAP_STOP | JOBCTL_TRAP_NOTIFY)
23 #define JOBCTL_PENDING_MASK    (JOBCTL_STOP_PENDING | JOBCTL_TRAP_MASK)

操作函數(shù)的聲明如下,具體的實現(xiàn)位于kernel/signal.c 文件中

1 extern bool task_set_jobctl_pending(struct task_struct *task,
2                     unsigned int mask);
3 extern void task_clear_jobctl_trapping(struct task_struct *task);
4 extern void task_clear_jobctl_pending(struct task_struct *task,
5                       unsigned int mask);

40.

1     /* Used for emulating ABI behavior of previous Linux versions */
2     unsigned int personality;

不清楚

41. unsigned did_exec:1;

不清楚

42.

1 unsigned in_execve:1;    /* Tell the LSMs that the process is doing an
2                  * execve */

進(jìn)程在執(zhí)行中

43. unsigned in_iowait:1;

進(jìn)程在IO等待中

44.

1     /* Revert to default priority/policy when forking */
2     unsigned sched_reset_on_fork:1;

在fork的時候調(diào)度reset

45. unsigned sched_contributes_to_load:1;

調(diào)度對負(fù)載的影響

46. unsigned long atomic_flags; /* Flags needing atomic access. */

需要原子操作的flag

下邊為跟此flag有關(guān)的宏和函數(shù)

 1 /* Per-process atomic flags. */
 2 #define PFA_NO_NEW_PRIVS 0x00000001    /* May not gain new privileges. */
 3 
 4 static inline bool task_no_new_privs(struct task_struct *p)
 5 {
 6     return test_bit(PFA_NO_NEW_PRIVS, &p->atomic_flags);
 7 }
 8 
 9 static inline void task_set_no_new_privs(struct task_struct *p)
10 {
11     set_bit(PFA_NO_NEW_PRIVS, &p->atomic_flags);
12 }

47. pid_t pid;

進(jìn)程pid

48. pid_t tgid;

threadgroup id

49.

1 #ifdef CONFIG_CC_STACKPROTECTOR
2     /* Canary value for the -fstack-protector gcc feature */
3     unsigned long stack_canary;
4 #endif

棧金絲雀,防止棧被篡改,宏CONFIG_CC_STACKPROTECTOR 未定義

50.

1     /*
2      * pointers to (original) parent process, youngest child, younger sibling,
3      * older sibling, respectively.  (p->father can be replaced with
4      * p->real_parent->pid)
5      */
6     struct task_struct __rcu *real_parent; /* real parent process */

真正的父進(jìn)程

51. struct task_struct __rcu *parent; /* recipient of SIGCHLD, wait4() reports */

不清楚

52.

1     /*
2      * children/sibling forms the list of my natural children
3      */
4     struct list_head children;    /* list of my children */

子進(jìn)程的list

53. struct list_head sibling; /* linkage in my parent's children list */

兄弟姐妹的list

54. struct task_struct *group_leader; /* threadgroup leader */

thread group的leader

55. 56.

1 #ifdef CONFIG_MTK_SCHED_CMP_TGS
2     raw_spinlock_t thread_group_info_lock;
3     struct thread_group_info_t thread_group_info[NUM_CLUSTER];
4 #endif

不清楚,宏CONFIG_MTK_SCHED_CMP_TGS 未定義

57. 58.

1     /*
2      * ptraced is the list of tasks this task is using ptrace on.
3      * This includes both natural children and PTRACE_ATTACH targets.
4      * p->ptrace_entry is p's link on the p->parent->ptraced list.
5      */
6     struct list_head ptraced;
7     struct list_head ptrace_entry;

不清楚

59.

1     /* PID/PID hash table linkage. */
2     struct pid_link pids[PIDTYPE_MAX];

跟進(jìn)程namespace相關(guān),不清楚

60. struct list_head thread_group;

thread group

61. struct list_head thread_node;

不清楚

62. struct completion *vfork_done; /* for vfork() */

不清楚

63. struct completion *vfork_done; /* for vfork() */

vfork是否完成

64. 65.

1     int __user *set_child_tid;        /* CLONE_CHILD_SETTID */
2     int __user *clear_child_tid;        /* CLONE_CHILD_CLEARTID */

不清楚

66. 67. 68. 69. 70.

1     cputime_t utime, stime, utimescaled, stimescaled;
2     cputime_t gtime;

不清楚

71.

1 #ifndef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
2     struct cputime prev_cputime;
3 #endif

不清楚,宏CONFIG_VIRT_CPU_ACCOUNTING_NATIVE 未定義

72. 73.

1 #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
2     seqlock_t vtime_seqlock;
3     unsigned long long vtime_snap;
4     enum {
5         VTIME_SLEEPING = 0,
6         VTIME_USER,
7         VTIME_SYS,
8     } vtime_snap_whence;
9 #endif

不清楚,宏CONFIG_VIRT_CPU_ACCOUNTING_GEN 未定義

74. 75.

unsigned long nvcsw, nivcsw; /* context switch counts */

不清楚

76. struct timespec start_time; /* monotonic time */

不清楚,單調(diào)時間不清楚

77. struct timespec real_start_time; /* boot based time */

真實啟動時間

78. 79.

1 /* mm fault and swap info: this can arguably be seen as either mm-specific or thread-specific */
2     unsigned long min_flt, maj_flt;

不清楚

80. 81. 82.

1 /* for thrashing accounting */
2 #ifdef CONFIG_ZRAM
3     unsigned long fm_flt, swap_in, swap_out;
4 #endif

不清楚,宏CONFIG_ZRAM 未定義

83. struct task_cputime cputime_expires;

cputime到期

84. struct list_head cpu_timers[3];

不清楚

85. 86. 87.

1 /* process credentials */
2     const struct cred __rcu *real_cred; /* objective and real subjective task
3                      * credentials (COW) */
4     const struct cred __rcu *cred;    /* effective (overridable) subjective task
5                      * credentials (COW) */
6     char comm[TASK_COMM_LEN]; /* executable name excluding path
7                      - access with [gs]et_task_comm (which lock
8                        it with task_lock())
9                      - initialized normally by setup_new_exec */

不清楚,什么是process credential

88. 89.

1 /* file system info */
2     int link_count, total_link_count;

link數(shù)和總共link數(shù)

90.

1 #ifdef CONFIG_SYSVIPC
2 /* ipc stuff */
3     struct sysv_sem sysvsem;
4 #endif

IPC相關(guān),宏CONFIG_SYSVIPC 未定義

91.

1 #ifdef CONFIG_DETECT_HUNG_TASK
2 /* hung task detection */
3     unsigned long last_switch_count;
4 #endif

task hung檢測,宏CONFIG_DETECT_HUNG_TASK 未定義

92.

1 /* CPU-specific state of this task */
2     struct thread_struct thread;

task跟cpu相關(guān)的狀態(tài)

93.

1 /* filesystem information */
2     struct fs_struct *fs;

這個進(jìn)程與之相關(guān)的文件系統(tǒng)

94.

1 /* open file information */
2     struct files_struct *files;

這個進(jìn)程打開的文件

95.

1 /* namespaces */
2     struct nsproxy *nsproxy;

進(jìn)程的namespace代理

96.

1 /* signal handlers */
2     struct signal_struct *signal;

進(jìn)程的信號

97. struct sighand_struct *sighand;

signal handler

98. 99. 100. 101.

1     sigset_t blocked, real_blocked;
2     sigset_t saved_sigmask;    /* restored if set_restore_sigmask() was used */
3     struct sigpending pending;

不清楚

102.

1     unsigned long sas_ss_sp;
2     size_t sas_ss_size;

不清楚

103. 104. 105.

1     int (*notifier)(void *priv);
2     void *notifier_data;
3     sigset_t *notifier_mask;

notifier相關(guān),不清楚具體通知什么

106. struct callback_head *task_works;

進(jìn)程的回調(diào)隊列

107. struct audit_context *audit_context;

不清楚

108.

1 #ifdef CONFIG_AUDITSYSCALL
2     kuid_t loginuid;
3     unsigned int sessionid;
4 #endif

不清楚,宏CONFIG_AUDITSYSCALL 未定義

109. struct seccomp seccomp;

不清楚

110. 111.

1 /* Thread group tracking */
2        u32 parent_exec_id;
3        u32 self_exec_id;

thread group中parent和self的執(zhí)行id

112.

1 /* Protection of (de-)allocation: mm, files, fs, tty, keyrings, mems_allowed,
2  * mempolicy */
3     spinlock_t alloc_lock;

mm、files、fs、tty、keyrings、mems_allowed、mempolicy分配的鎖

113.

1     /* Protection of the PI data structures: */
2     raw_spinlock_t pi_lock;

pi data鎖,不清楚pi是什么

114. 115.

1 #ifdef CONFIG_RT_MUTEXES
2     /* PI waiters blocked on a rt_mutex held by this task */
3     struct plist_head pi_waiters;
4     /* Deadlock detection and priority inheritance handling */
5     struct rt_mutex_waiter *pi_blocked_on;
6 #endif

不清楚,宏CONFIG_RT_MUTEXES有定義

116.

1 #ifdef CONFIG_DEBUG_MUTEXES
2     /* mutex deadlock detection */
3     struct mutex_waiter *blocked_on;
4 #endif

不清楚,宏CONFIG_DEBUG_MUTEXES 未定義

117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129.

 1 #ifdef CONFIG_TRACE_IRQFLAGS
 2     unsigned int irq_events;
 3     unsigned long hardirq_enable_ip;
 4     unsigned long hardirq_disable_ip;
 5     unsigned int hardirq_enable_event;
 6     unsigned int hardirq_disable_event;
 7     int hardirqs_enabled;
 8     int hardirq_context;
 9     unsigned long softirq_disable_ip;
10     unsigned long softirq_enable_ip;
11     unsigned int softirq_disable_event;
12     unsigned int softirq_enable_event;
13     int softirqs_enabled;
14     int softirq_context;
15 #endif

中斷跟蹤,包括總的中斷數(shù)、hard和soft中斷的enable、disable中斷數(shù),不清楚ip是什么意思

130. 131. 132. 133. 134.

1 #ifdef CONFIG_LOCKDEP
2 # define MAX_LOCK_DEPTH 48UL
3     u64 curr_chain_key;
4     int lockdep_depth;
5     unsigned int lockdep_recursion;
6     struct held_lock held_locks[MAX_LOCK_DEPTH];
7     gfp_t lockdep_reclaim_gfp;
8 #endif

跟鎖依賴有關(guān),不清楚具體做什么

135.

1 /* journalling filesystem info */
2     void *journal_info;

文件系統(tǒng)的日志

136.

1 /* stacked block device info */
2     struct bio_list *bio_list;

被存入堆棧的block device io list

137.

1 #ifdef CONFIG_BLOCK
2 /* stack plugging */
3     struct blk_plug *plug;
4 #endif

block device的插拔

138.

1 /* VM state */
2     struct reclaim_state *reclaim_state;

不清楚

139. struct backing_dev_info *backing_dev_info;

不清楚

140. struct io_context *io_context;

進(jìn)程的io context

141. unsigned long ptrace_message;

ptrace message

142. siginfo_t *last_siginfo; /* For ptrace use. */

最后的signal信息

143. struct task_io_accounting ioac;

task io計數(shù)

144. 145. 146.

1 #if defined(CONFIG_TASK_XACCT)
2     u64 acct_rss_mem1;    /* accumulated rss usage */
3     u64 acct_vm_mem1;    /* accumulated virtual memory usage */
4     cputime_t acct_timexpd;    /* stime + utime since last update */
5 #endif

累積的rss memory、virtual memory、time話費(fèi),宏CONFIG_TASK_XACCT 未定義

147. 148. 149. 150.

1 #ifdef CONFIG_CPUSETS
2     nodemask_t mems_allowed;    /* Protected by alloc_lock */
3     seqcount_t mems_allowed_seq;    /* Seqence no to catch updates */
4     int cpuset_mem_spread_rotor;
5     int cpuset_slab_spread_rotor;
6 #endif

不清楚,宏CONFIG_CPUSETS 未定義

151. 152.

1 #ifdef CONFIG_CGROUPS
2     /* Control Group info protected by css_set_lock */
3     struct css_set __rcu *cgroups;
4     /* cg_list protected by css_set_lock and tsk->alloc_lock */
5     struct list_head cg_list;
6 #endif

css(cgroups subsys state)的cgroups和cgroup list

153. 154. 155. 156

1 #ifdef CONFIG_FUTEX
2     struct robust_list_head __user *robust_list;
3 #ifdef CONFIG_COMPAT
4     struct compat_robust_list_head __user *compat_robust_list;
5 #endif
6     struct list_head pi_state_list;
7     struct futex_pi_state *pi_state_cache;
8 #endif

不清楚,宏CONFIG_FUTEX 未定義

157. 158. 159.

1 #ifdef CONFIG_PERF_EVENTS
2     struct perf_event_context *perf_event_ctxp[perf_nr_task_contexts];
3     struct mutex perf_event_mutex;
4     struct list_head perf_event_list;
5 #endif

performance相關(guān)的event context數(shù)組、event mutex、event list

160. 161. 162.

1 #ifdef CONFIG_NUMA
2     struct mempolicy *mempolicy;    /* Protected by alloc_lock */
3     short il_next;
4     short pref_node_fork;
5 #endif

不清楚,宏CONFIG_NUMA (Non-uniform memory access )未定義

163. 164. 165. 166. 167.

1 #ifdef CONFIG_NUMA_BALANCING
2     int numa_scan_seq;
3     int numa_migrate_seq;
4     unsigned int numa_scan_period;
5     u64 node_stamp;            /* migration stamp  */
6     struct callback_head numa_work;
7 #endif /* CONFIG_NUMA_BALANCING */

不清楚

168. struct rcu_head rcu;

read copy update頭

169.

1     /*
2      * cache last used pipe for splice
3      */
4     struct pipe_inode_info *splice_pipe;

不清楚

170.

1     /*
2      * cache last used pipe for splice
3      */
4     struct pipe_inode_info *splice_pipe;

splice pipe的信息

171. struct page_frag task_frag;

task的page fragment

172.

1 #ifdef    CONFIG_TASK_DELAY_ACCT
2     struct task_delay_info *delays;
3 #endif

不清楚,宏CONFIG_TASK_DELAY_ACCT 未定義

173.

1 #ifdef CONFIG_FAULT_INJECTION
2     int make_it_fail;
3 #endif

不清楚

174. 175. 176.

1     /*
2      * when (nr_dirtied >= nr_dirtied_pause), it's time to call
3      * balance_dirty_pages() for some dirty throttling pause
4      */
5     int nr_dirtied;
6     int nr_dirtied_pause;
7     unsigned long dirty_paused_when; /* start of a write-and-pause period */

dirty page相關(guān)

177. 178.

1 #ifdef CONFIG_LATENCYTOP
2     int latency_record_count;
3     struct latency_record latency_record[LT_SAVECOUNT];
4 #endif

不清楚,宏CONFIG_LATENCYTOP 未定義

179. 180.

1     /*
2      * time slack values; these are used to round up poll() and
3      * select() etc timeout values. These are in nanoseconds.
4      */
5     unsigned long timer_slack_ns;
6     unsigned long default_timer_slack_ns;

poll()和select()等的timeout值

181. 182. 183. 184. 185.

 1 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
 2     /* Index of current stored address in ret_stack */
 3     int curr_ret_stack;
 4     /* Stack of return addresses for return function tracing */
 5     struct ftrace_ret_stack    *ret_stack;
 6     /* time stamp for last schedule */
 7     unsigned long long ftrace_timestamp;
 8     /*
 9      * Number of functions that haven't been traced
10      * because of depth overrun.
11      */
12     atomic_t trace_overrun;
13     /* Pause for the tracing */
14     atomic_t tracing_graph_pause;
15 #endif

ftrace的圖形化跟蹤變量,宏 CONFIG_FUNCTION_GRAPH_TRACER 未定義

186. 187.

1 #ifdef CONFIG_TRACING
2     /* state flags for use by tracers */
3     unsigned long trace;
4     /* bitmask and counter of trace recursion */
5     unsigned long trace_recursion;
6 #endif /* CONFIG_TRACING */

trace的flag和trace遞歸的數(shù)量和bitmask

188. 189. 190

 1 #ifdef CONFIG_MEMCG /* memcg uses this to do batch job */
 2     struct memcg_batch_info {
 3         int do_batch;    /* incremented when batch uncharge started */
 4         struct mem_cgroup *memcg; /* target memcg of uncharge */
 5         unsigned long nr_pages;    /* uncharged usage */
 6         unsigned long memsw_nr_pages; /* uncharged mem+swap usage */
 7     } memcg_batch;
 8     unsigned int memcg_kmem_skip_account;
 9     struct memcg_oom_info {
10         struct mem_cgroup *memcg;
11         gfp_t gfp_mask;
12         int order;
13         unsigned int may_oom:1;
14     } memcg_oom;
15 #endif

不清楚,宏 CONFIG_MEMCG 未定義

191.

1 #ifdef CONFIG_HAVE_HW_BREAKPOINT
2     atomic_t ptrace_bp_refcnt;
3 #endif

ptrace的斷點引用數(shù)量

192.

1 #ifdef CONFIG_UPROBES
2     struct uprobe_task *utask;
3 #endif

不清楚,宏CONFIG_UPROBES 未定義

193. 194.

1 #if defined(CONFIG_BCACHE) || defined(CONFIG_BCACHE_MODULE)
2     unsigned int    sequential_io;
3     unsigned int    sequential_io_avg;
4 #endif

不清楚,宏CONFIG_BCACHE 和CONFIG_BCACHE 未定義

總結(jié)

以上是生活随笔為你收集整理的【一】 sched.h的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

久久精品视频一 | 色a在线观看 | 麻豆视频www | 尤物九九久久国产精品的分类 | 国产午夜精品av一区二区 | 国产999视频在线观看 | 狠狠操操操 | 色网站在线 | 99在线观看 | 中文字幕丝袜一区二区 | www五月天| 手机在线日韩视频 | 久久久亚洲精华液 | 久久tv| 欧美日韩在线网站 | 97超碰色偷偷 | 国产精品久久久久一区二区国产 | 亚洲精品视频免费 | 国产一区二区视频在线播放 | 国内精品美女在线观看 | 99久热在线精品视频成人一区 | 国产成人精品三级 | 日韩欧美高清免费 | 2021国产在线视频 | 欧美成人按摩 | 日韩理论视频 | 国产成视频在线观看 | 久久99精品久久久久久秒播蜜臀 | 天天射天 | 亚洲欧美国产精品18p | 狠狠色噜噜狠狠狠狠2021天天 | 九九精品视频在线观看 | 久久久久婷 | jizzjizzjizz亚洲 | 99性视频 | 日韩特级片 | 欧美日韩一区二区在线观看 | 久99精品 | 久久久高清免费视频 | 超碰在线官网 | 麻豆观看| 最新av网址大全 | 国产精品久久久久久久久岛 | 在线观看视频国产 | 久久久久久久久久久高潮一区二区 | 国产色拍拍拍拍在线精品 | 亚洲欧美日韩一区二区三区在线观看 | 激情图片久久 | 国内99视频 | 免费在线观看国产精品 | 在线观看视频h | 中文字幕在线免费观看视频 | 国产91亚洲| 激情丁香婷婷 | 日韩大片在线看 | 午夜国产福利在线 | 国产福利一区二区三区在线观看 | 中文字幕在线免费播放 | 国产在线看 | 久久成人免费 | 亚洲专区欧美专区 | 在线视频欧美日韩 | 久久久久国产成人免费精品免费 | 国产精品一区免费在线观看 | 91av原创 | 久久视频一区二区 | 免费在线一区二区三区 | 在线天堂中文在线资源网 | 色视频在线看 | 久久久久久久免费看 | 日本不卡久久 | a级片网站 | 国产999精品久久久久久绿帽 | 夜夜躁狠狠燥 | 2021久久| 国内外成人在线 | 三级av中文字幕 | 一区二区三区国 | 免费成人av在线 | 久草在线资源视频 | 日韩在线无 | 激情片av | 国产成视频在线观看 | 亚洲视频一区二区三区在线观看 | 欧美日韩一级久久久久久免费看 | 青春草视频| 日韩精品一卡 | 久久久久久网址 | 激情欧美日韩一区二区 | 成人av资源在线 | 国产精品女人久久久 | 久久精品激情 | 国产资源中文字幕 | 在线精品在线 | 天天色天天搞 | 天天操天天射天天操 | 蜜臀av一区二区 | 国产乱码精品一区二区三区介绍 | 亚洲色综合 | 亚洲综合在线播放 | 精品毛片一区二区免费看 | 欧美资源| 日韩av一卡二卡三卡 | av高清在线观看 | 在线免费观看麻豆视频 | 69久久99精品久久久久婷婷 | 亚洲作爱 | 99国内精品 | 久久精品一区二区三区四区 | 天天操天天色天天 | 免费a视频在线 | 日韩成人免费在线电影 | 中文字幕高清视频 | 精品久久影院 | 日韩在线观看免费 | 国产精品国产三级在线专区 | 成年人免费av网站 | 天天草天天干天天射 | 国产69精品久久app免费版 | 亚洲最大成人免费网站 | 久久伊人八月婷婷综合激情 | 99在线热播精品免费99热 | 日韩欧美精品一区二区 | 国产黄色片免费 | 人人干,人人爽 | 又色又爽又黄高潮的免费视频 | 国产精品久久久久久久久久ktv | 四虎免费av | 三级午夜片 | 亚洲 综合 国产 精品 | 麻豆精品在线视频 | 成全免费观看视频 | 综合婷婷 | 天天草天天草 | 国产精品久久99精品毛片三a | 欧美极品xxxxx | 国产精彩视频 | 69xx视频 | 国产精品久久久久婷婷 | 黄在线免费看 | 久久久久国产精品免费 | 亚洲有 在线 | 色婷婷www | 久在线 | 国产精品成人自产拍在线观看 | 婷婷色网 | 国产视频亚洲精品 | 免费日韩 精品中文字幕视频在线 | 激情深爱 | 国内精品久久久久久久97牛牛 | 国产字幕在线观看 | 91中文字幕视频 | 五月天狠狠操 | 精品99久久 | 日日干av| 午夜在线观看一区 | 国产98色在线 | 日韩 | 婷婷六月天丁香 | 午夜12点| 国产一区高清在线观看 | av再线观看 | 91九色视频观看 | av在线之家电影网站 | 日韩av片免费在线观看 | 69视频永久免费观看 | 婷婷丁香激情五月 | 麻豆va一区二区三区久久浪 | 色国产精品一区在线观看 | 精品久久久久久久久中文字幕 | 久久免费精品视频 | 视频一区在线免费观看 | 亚洲视频免费在线观看 | 国产日本三级 | 色婷婷综合成人av | 婷婷综合亚洲 | 字幕网av | 国产精品99久久久久人中文网介绍 | 一级黄色视屏 | 国产最新福利 | 99热九九这里只有精品10 | 日韩欧美69 | 国产精品一区二区三区四 | 久久激情视频网 | 久久 亚洲视频 | 日韩网站中文字幕 | 中文字幕在线观看日本 | 天天综合区 | 亚洲天堂精品视频 | 色综合天天综合网国产成人网 | 天天天在线综合网 | 高潮毛片无遮挡高清免费 | av在线电影网站 | 久久精品视频播放 | 在线观看中文字幕一区二区 | 久久影院一区 | 免费观看一级成人毛片 | 国产欧美久久久精品影院 | 日韩精品一区二区免费 | 成人观看 | 91精品国产自产老师啪 | 久久久免费精品 | 97视频在线观看播放 | 日韩视频一区二区在线 | 久久综合九色综合久99 | 五月婷婷中文 | 黄色av电影一级片 | 最新日韩视频在线观看 | h网站免费在线观看 | 亚洲精品免费播放 | 视频精品一区二区三区 | 一区二区电影在线观看 | 欧美另类v | 日韩高清国产精品 | 亚洲精品欧美成人 | 成人在线免费观看网站 | 久久成人麻豆午夜电影 | 欧美大片大全 | 青青久视频 | 中文字幕色综合网 | 国产精品久久久久久久久久久久午夜 | av不卡网站| 久久成人欧美 | 五月婷婷伊人网 | 亚洲成人精品国产 | 四虎永久精品在线 | 五月婷婷在线视频观看 | 激情av网| 国色天香av| 久久久久久在线观看 | 亚洲丝袜一区二区 | 国产精品一区二区三区观看 | 在线国产片 | 91av在线免费看 | 国产亚洲va综合人人澡精品 | 国产精品大片 | 黄色午夜 | 五月婷婷开心 | 久久99国产精品二区护士 | 久久免费成人 | 久操中文字幕在线观看 | 天天操夜夜拍 | 九九热精品视频在线播放 | 国产成人精品在线 | 欧美日韩xx | 亚洲黄色小说网址 | av中文字幕电影 | 婷婷六月综合亚洲 | 日韩在线观看网址 | 中文字幕在线观看一区二区 | 中文字幕有码在线播放 | 欧美日韩视频一区二区 | 久草视频免费在线观看 | 美女视频黄免费 | 国产精品女人网站 | 91视频首页 | 日日天天av | 四虎永久免费 | 激情大尺度视频 | 91看片一区二区三区 | 欧美大片在线观看一区 | 在线免费观看视频a | 美女视频黄,久久 | 欧日韩在线视频 | 91网页版免费观看 | 久久毛片网| 国产九九热 | 国产乱对白刺激视频不卡 | 欧美一区二区三区在线播放 | 麻豆国产网站 | 国产精品一区二区电影 | 免费看一级片 | 欧洲精品在线视频 | 成人app在线免费观看 | 在线观看中文字幕一区 | 成人亚洲综合 | 91av视频免费在线观看 | 天天天天色综合 | 国产精品久久久久久久久久尿 | 九九久久影视 | 国内精品久久久久久久久 | 午夜视频在线观看网站 | 久久黄色免费视频 | 国产一区二区三区黄 | 九九热有精品 | 国产黄色播放 | 免费视频二区 | 中文字幕视频 | 天天综合成人网 | 成人免费视频视频在线观看 免费 | 91在线欧美| 欧美精品久 | 久久免费在线观看 | 亚洲精品无 | 亚洲一区av| 在线免费中文字幕 | 久久久久成人免费 | 免费在线播放av电影 | 在线免费av播放 | 一色av | 国产精品久久久久久一区二区三区 | 黄色软件在线观看免费 | 91视频亚洲 | 久久久久久国产精品免费 | 日日爽天天操 | 91成人免费视频 | 在线观看va| 国产亚洲精品久久久久久移动网络 | 婷婷久月 | 久久免费视频网站 | 视频一区久久 | 在线观看视频在线观看 | 国产91国语对白在线 | 国偷自产视频一区二区久 | 亚洲精品合集 | 国产特级毛片aaaaaa | 四虎成人精品永久免费av九九 | 99r在线| 亚洲精品国产第一综合99久久 | 蜜臀av性久久久久蜜臀av | 99免费在线观看视频 | 久久人操 | 制服丝袜成人在线 | 日韩免费中文字幕 | 波多野结衣一区 | 欧美视频国产视频 | 91自拍视频在线 | 黄网站免费看 | 国产精品每日更新 | a级国产乱理伦片在线观看 亚洲3级 | 久草在线视频中文 | 久久久麻豆精品一区二区 | 五月天综合色激情 | 成 人 黄 色视频免费播放 | 69av国产| 日韩三级一区 | www.五月天激情 | 久久精品香蕉 | 亚洲国产精品电影 | 欧美综合在线视频 | 欧美在线aa | 天天色天天射天天操 | 婷婷中文在线 | 免费a视频在线观看 | 奇米四色影狠狠爱7777 | 成人av电影免费在线观看 | 涩涩网站在线 | 国产精品午夜久久 | 精品999国产| 国产中文字幕网 | 91在线www | 97色涩| 欧美精品中文字幕亚洲专区 | 黄色一级免费 | 伊人导航| 三上悠亚一区二区在线观看 | 久久av伊人| 欧美激情精品久久久久久变态 | 成人免费xxxxxx视频 | 国内视频 | 日韩av不卡在线播放 | 日日夜夜噜 | 免费在线色电影 | 国产xx在线 | 免费观看的黄色片 | 玖玖精品在线 | 国产高清视频在线播放 | 免费观看特级毛片 | 国内成人精品2018免费看 | 麻豆传媒在线视频 | 在线观看av不卡 | 成人免费观看大片 | 婷婷五情天综123 | 密桃av在线| 日本视频久久久 | 超碰人人国产 | 免费看一级特黄a大片 | www.少妇| 波多野结衣在线视频免费观看 | 一级一片免费视频 | 天天操比| www.天堂av| 丁香婷婷综合激情五月色 | 欧美激情另类 | 国产精品久99 | www天天干com| 91福利视频免费观看 | av片在线观看免费 | 免费亚洲视频在线观看 | 亚洲人成精品久久久久 | 五月开心婷婷网 | 婷婷丁香色| 欧美一区二区三区在线播放 | 欧美在线aaa | 成人黄色大片在线观看 | 国产精品久久久久久69 | 国产香蕉97碰碰久久人人 | 成人手机在线视频 | 五月花激情 | 久久网站免费 | 天天干夜夜爽 | 五月激情丁香 | 草久草久 | 亚洲第一中文字幕 | 丁香婷婷色综合亚洲电影 | 国产日韩中文字幕 | 永久免费毛片在线观看 | 日韩中文字幕免费电影 | 久久尤物电影视频在线观看 | 韩国精品一区二区三区六区色诱 | 天天看天天干 | 91视频免费国产 | 日韩 在线观看 | 精品国产免费人成在线观看 | 国产欧美在线一区二区三区 | 91av看片 | 久久的色| 在线视频观看国产 | 色综合久久久久综合体桃花网 | 国产精品视频全国免费观看 | av大片免费在线观看 | 日韩av一区二区在线播放 | 国产成人av免费在线观看 | 久久精品日本啪啪涩涩 | 亚洲综合成人在线 | 天堂网av在线 | 在线观看中文字幕 | 中国成人一区 | 探花视频免费观看 | 久久久私人影院 | 国产高清av免费在线观看 | 久久亚洲精品电影 | 在线观看免费成人 | 亚洲精品电影在线 | 99久久婷婷国产综合亚洲 | 丝袜美女在线观看 | 亚洲黄色av网址 | 国产成人精品综合 | 久久亚洲专区 | 狠狠网| 亚洲精品视频在线播放 | 九九九九热精品免费视频点播观看 | 天堂av免费 | 99人久久精品视频最新地址 | 国产一级电影免费观看 | 岛国av在线免费 | 欧美日韩一区三区 | 91最新网址在线观看 | 久久精品成人欧美大片古装 | 天天操夜夜操国产精品 | 国产一线二线三线在线观看 | 日韩激情精品 | 欧美一进一出抽搐大尺度视频 | 在线观看精品国产 | 国产精品久久99综合免费观看尤物 | 亚洲人人网 | 在线国产一区二区三区 | 免费欧美 | 中文字幕一区二区三区乱码不卡 | av资源网在线播放 | 国产精品免费观看国产网曝瓜 | 午夜精品一区二区三区免费视频 | 97精品一区二区三区 | 人人爽人人看 | 成年人在线电影 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产高清在线a视频大全 | 日韩精品2区 | 久久国产精品99精国产 | 久热色超碰 | 91av大全 | 欧美国产日韩一区二区三区 | 黄色网址国产 | 天天干天天爽 | 久久国产精品久久w女人spa | 久久久久久久久久福利 | 亚洲精品在线免费 | 亚洲va欧美va国产va黑人 | 99久久精品免费看国产免费软件 | 四虎国产精品成人免费4hu | 在线观看中文 | 日韩中字在线观看 | 五月婷婷久草 | 日韩精品三区四区 | 国产精品国产三级国产aⅴ9色 | 婷婷激情五月 | 日日成人网 | 欧美日性视频 | 国产无吗一区二区三区在线欢 | 欧美人人| 日本高清中文字幕有码在线 | 日日操操操 | 又粗又长又大又爽又黄少妇毛片 | 国产三级国产精品国产专区50 | av福利电影| 日韩精品一区二区不卡 | 欧美日韩精品在线视频 | 欧美一区二区三区在线 | 999久久久免费精品国产 | 99精品免费久久久久久久久 | 草久在线播放 | 久久久精品国产免费观看一区二区 | 91免费的视频在线播放 | 91色吧 | 国产日韩欧美视频在线观看 | 99热这里只有精品1 av中文字幕日韩 | 九色免费视频 | 成人av免费电影 | 免费观看十分钟 | 日韩在线观看影院 | 欧美日韩一区二区三区视频 | 99精品国产在热久久 | 久久一级片 | 国产精品av免费观看 | 国产资源av | 在线观看国产亚洲 | 99精品视频网 | 国产精品午夜免费福利视频 | 亚洲国产一区av | 91精品视频免费 | 天天射天天舔天天干 | 四虎www com | 日日爱影视 | 国产一区二区在线视频观看 | 国产精品麻豆欧美日韩ww | 操操色 | 国产一区二区在线精品 | www.99在线观看 | 夜夜干夜夜 | 日韩一区二区在线免费观看 | 69久久夜色精品国产69 | 亚洲精品乱码久久久久久按摩 | 午夜av激情 | 91漂亮少妇露脸在线播放 | 精品在线观看一区二区三区 | 亚洲精品欧洲精品 | 国产视频97 | 国产手机在线观看视频 | av免费黄色 | 99热在线观看 | 久久中文精品视频 | 亚洲国产小视频在线观看 | 成人av中文字幕 | 亚洲色视频 | 国产精品久久久久久久久免费 | 成人在线免费看视频 | 欧美老女人xx | www五月天婷婷 | 欧美 日韩 视频 | 亚洲成人免费观看 | 视频直播国产精品 | 国产在线观看a | 2023av| 日韩av一区二区三区在线观看 | 精品国产伦一区二区三区观看体验 | 欧美热久久 | 欧美极度另类性三渗透 | 久久婷婷影视 | 亚洲国内精品视频 | 久草网站在线观看 | 久久麻豆精品 | 久久黄色成人 | 亚洲一二区精品 | 99re热精品视频 | 国产中文字幕国产 | 天天干,夜夜操 | 久久精品一区二区三区国产主播 | 97国产精品亚洲精品 | 欧美成人aa | 国产成人久久av977小说 | 国产精品成人久久 | 天天色视频 | 成人免费电影 | 日韩在线免费播放 | 97精品免费视频 | 丁香花在线视频观看免费 | 激情久久综合网 | 在线成人一区 | 欧美激情综合色综合啪啪五月 | 欧美日韩大片在线观看 | 亚洲区色| 高清在线一区 | 久久免费视频这里只有精品 | 日本精品视频一区 | 国产精品久久久久久一区二区 | 午夜三级福利 | 91亚洲精品久久久蜜桃借种 | 激情网站网址 | 五月婷婷激情 | 又黄又爽又湿又无遮挡的在线视频 | 亚洲视频免费在线看 | 黄网站app在线观看免费视频 | 国产精品视频app | 国产视频日本 | www黄色大片 | 天天操天天插 | 婷婷中文字幕综合 | 国产精品精品国产婷婷这里av | 天天曰| 国产精品综合av一区二区国产馆 | 草在线视频 | 国产在线美女 | 中文字幕在线观看一区二区三区 | 久久激情日本aⅴ | 2024国产精品视频 | 国产成人免费观看久久久 | 91中文字幕网 | 日韩av中文在线 | 五月天久久 | 久久久久国产精品厨房 | 最新国产在线视频 | 一级片视频在线 | 91精品国产九九九久久久亚洲 | 国产成人精品一区二 | 久久你懂得 | 天天操天天干天天综合网 | 福利一区二区三区四区 | 五月天中文字幕mv在线 | 亚洲 欧洲av | 日日夜日日干 | 夜夜嗨av色一区二区不卡 | 亚洲国产成人精品在线观看 | www99精品| 国产精品久久婷婷六月丁香 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 国产伦理一区 | 亚洲国内精品在线 | 手机成人在线电影 | 成年人视频在线免费播放 | 国产精品一区二区三区四区在线观看 | 国产第一页在线观看 | 亚洲精品在线播放视频 | 亚洲精品欧洲精品 | 欧美日韩国产一区二区三区 | 91在线产啪 | 久久久久久久99精品免费观看 | 六月丁香六月婷婷 | 日韩影视在线观看 | 久久综合成人网 | 久久黄色片 | 久久99亚洲精品 | 91综合色| 欧美黄色免费 | 999久久久久久久久 69av视频在线观看 | 丁香五香天综合情 | 日韩久久影院 | 天天天天射 | 亚洲人成综合 | 中文字幕在线观看视频一区 | 综合久久精品 | 成人a免费 | 成人黄大片视频在线观看 | 国产一区二区三区视频在线 | 亚洲专区 国产精品 | 国产中文在线视频 | 国产成人精品一区二区三区在线 | 国产亚洲情侣一区二区无 | 天天干天天干天天干天天干天天干天天干 | 亚洲国产精品va在线看黑人动漫 | 黄色三级免费片 | 九九国产视频 | 97超级碰碰 | 911av视频 | 久久久免费少妇 | 色综合久久88色综合天天免费 | 综合久久影院 | 日韩黄色免费 | 欧美激情视频一区二区三区 | 人人爽人人爽人人片av | 高清av免费看 | 久久99久久99久久 | 久久久久免费精品视频 | 日韩综合一区二区 | 国产视频久久久 | 狠狠干婷婷色 | 国产精品第72页 | 五月婷婷综合在线观看 | 亚洲精品456在线播放乱码 | 日韩二区在线观看 | 国产资源在线视频 | 久章草在线观看 | 色欧美视频 | 国产97av| 这里只有精品视频在线观看 | 天天射色综合 | 亚洲精品一区二区在线观看 | 中文字幕av免费在线观看 | av中文天堂在线 | 久久精品国产一区二区三 | 国产精品免费在线播放 | 久草a在线 | 亚洲a网| 91久久国产自产拍夜夜嗨 | 天天插天天射 | 伊人官网| 国产偷在线 | 男女靠逼app | 国内精品免费久久影院 | 久久伊人综合 | 超碰人人国产 | 99精品视频观看 | 国产精品久久久久久久久久久不卡 | 97人人澡人人添人人爽超碰 | 久久久福利影院 | 天天色综合三 | 麻豆视频在线观看免费 | 中国美女一级看片 | 成人毛片久久 | 免费三级黄色片 | 免费一级片视频 | av大片网址 | 激情综合五月 | 99视频国产精品 | 中文字幕精品视频 | 天天干天天操天天 | 九九爱免费视频在线观看 | 五月婷婷综合在线观看 | 成人久久久精品国产乱码一区二区 | 97精品国产97久久久久久久久久久久 | 国产在线更新 | 久久精品欧美视频 | 欧美日韩精品网站 | 精品美女久久久久久免费 | 国产男男gay做爰 | 337p日本欧洲亚洲大胆裸体艺术 | 天干啦夜天干天干在线线 | 国产热re99久久6国产精品 | 久久国产露脸精品国产 | 欧美天天干 | 精品久久精品久久 | 精品99在线 | 久久99精品国产麻豆宅宅 | 亚洲国内精品在线 | 天天爽天天爽夜夜爽 | 久久久久久毛片 | 精品国产一区二区三区久久久久久 | 亚洲精品一区二区三区在线观看 | 日本丶国产丶欧美色综合 | 色婷婷狠狠五月综合天色拍 | 又污又黄的网站 | 日韩一区二区免费视频 | 欧美a级片免费看 | 国产成人在线网站 | 一级黄色片在线播放 | 六月色| 国产在线精品视频 | 日本韩国精品在线 | 91精品视频免费观看 | 九九综合久久 | 亚洲视频www | 国产精品影音先锋 | 日韩激情小视频 | 亚州精品视频 | 国产亚洲激情视频在线 | 五月婷婷视频在线观看 | 久久伊99综合婷婷久久伊 | 久久免费视频国产 | 亚洲视频一级 | 国产自在线观看 | 亚洲欧美日韩国产一区二区三区 | 日韩区视频| 国产清纯在线 | 久草资源在线观看 | 久久99热国产 | 亚洲高清视频一区二区三区 | av免费网页| 天天躁日日 | 日韩欧美高清一区二区三区 | 久久精品人人做人人综合老师 | 少妇精品久久久一区二区免费 | 中文字幕高清视频 | 丁香婷婷色月天 | 狠狠色丁香婷婷综合久小说久 | 99久久激情 | 久久久久久久久久久网站 | 最新极品jizzhd欧美 | 亚洲色五月 | 成年美女黄网站色大片免费看 | 伊人丁香 | 久久经典国产 | 国际精品久久久久 | 日韩精品视频久久 | 激情在线网站 | 又黄又爽的免费高潮视频 | 麻豆传媒视频观看 | 天天躁天天躁天天躁婷 | 久久综合久久八八 | 国产精品久久视频 | 美女福利视频网 | 久久人人97超碰com | 特级西西444www大精品视频免费看 | 国产精品99久久久久久人免费 | 99在线视频播放 | 偷拍精偷拍精品欧洲亚洲网站 | 黄av资源| 一区二区三区日韩在线 | 黄色小视频在线观看免费 | 五月婷婷免费 | a亚洲视频| 国模视频一区二区三区 | 欧美狠狠操| 毛片播放网站 | 日韩专区中文字幕 | 我要色综合天天 | 日本3级在线观看 | 一本一本久久a久久精品综合小说 | 成人av在线网址 | 久久久午夜精品福利内容 | 亚洲国产精品久久久久婷婷884 | 天天色天天爱天天射综合 | 欧美一级片在线播放 | 在线免费看黄网站 | 国产精品久久久久久久久毛片 | 免费在线成人 | 九九九九九九精品 | 成人小视频在线免费观看 | 在线观看第一页 | 色之综合网 | 精品美女久久久久 | 国产精品都在这里 | 美女国产精品 | 久爱综合 | 欧美性高跟鞋xxxxhd | 亚洲综合少妇 | 国产午夜影院 | 亚洲精品av中文字幕在线在线 | 特级毛片在线免费观看 | av线上免费观看 | 精品视频在线免费 | 92中文资源在线 | 日韩一级黄色av | 久久视频国产精品免费视频在线 | 欧美大码xxxx | 国产精品毛片久久久久久久久久99999999 | 天天av综合网 | 97福利视频 | 免费看色视频 | 91在线区| 视频一区二区三区视频 | 亚洲男人天堂a | 久久论理 | 天天超碰| 最新av网站在线观看 | 亚洲狠狠婷婷综合久久久 | 国产96在线观看 | www在线免费观看 | 中文字幕在线成人 | 国产中文字幕一区二区三区 | 久草在线视频免赞 | 久久久久久久毛片 | 超碰在线最新网址 | 黄av免费在线观看 | 九九天堂 | 狠狠狠狠狠狠狠干 | 色瓜| 日本久久成人 | 视频一区二区精品 | 香蕉视频一级 | 最近中文字幕完整视频高清1 | 欧美成人猛片 | 亚洲成熟女人毛片在线 | 91在线产啪| 三上悠亚在线免费 | 91久久精品一区二区二区 | 国产69精品久久99的直播节目 | 精品亚洲男同gayvideo网站 | 97超碰人 | 91女子私密保健养生少妇 | 99精品福利 | 精品在线播放 | 黄色精品网站 | 区一区二区三在线观看 | 久久网站免费 | 久草影视在线观看 | 四虎永久免费在线观看 | 国产精品日韩在线 | 午夜国产成人 | 色婷婷综合久久久 | 久久草草影视免费网 | 91传媒激情理伦片 | 久久久亚洲国产精品麻豆综合天堂 | 在线精品播放 | 在线看黄色av | 日韩在线视频不卡 | 国产日产精品一区二区三区四区的观看方式 | 正在播放一区二区 | 在线国产专区 | 国产午夜在线观看视频 | 中文字幕在线视频网站 | 国产亚洲精品成人av久久ww | 69久久99精品久久久久婷婷 | 成人av免费在线 | 日韩三区在线观看 | 麻豆播放 | 五月婷亚洲 | 99精品在线观看视频 | 黄色tv视频 | 一区二区三区播放 | 四虎5151久久欧美毛片 | 在线 成人 | 欧美日韩一级视频 | 久久人网| 黄色成人在线观看 | 久久免费av电影 | 日韩av福利在线 | av在线收看 | 国产精品网红直播 | 麻豆精品视频 | www激情com | 中文字幕丰满人伦在线 | 欧美另类xxx| 日韩av网页| 久久97久久| 精品国产美女在线 | 亚洲狠狠操 | 日韩中文字幕网站 | 在线91色 | 婷婷色资源 | 中文字幕在线观看资源 | 狠狠躁日日躁狂躁夜夜躁av | 欧美成人h版在线观看 | 精品久久久久久久久久 | 国产h在线播放 | 午夜.dj高清免费观看视频 | 激情丁香综合 | 午夜av剧场| 亚洲视屏在线播放 | 在线视频你懂 | 国产美女精品视频 | 尤物97国产精品久久精品国产 | 久久久黄色av | 亚洲一区欧美精品 | 日韩av图片 | aa一级片| 国产精品 欧美 日韩 | 国产精品成人一区二区 | 久久久久国产一区二区三区 | 国产成视频在线观看 | 亚洲精品视频免费观看 | 最近中文字幕大全 | 久久r精品 | 久久黄色a级片 | 久久免视频| 亚洲夜夜网 | 成人a在线观看高清电影 | 在线观看香蕉视频 | 色欧美日韩 | 亚洲三级视频 | 久久久久 | 91av片| 日韩在线中文字幕 | 日韩av在线不卡 | 国产伦理一区 | 亚洲国产精彩中文乱码av | 丁香婷婷综合五月 | 日本中文字幕观看 | 人人爽人人澡人人添人人人人 | 最近中文字幕第一页 | 伊人色综合久久天天网 | 天天干天天拍 | 日韩欧美一区二区三区在线观看 | 美女视频黄是免费的 | 国产午夜免费视频 | 国产精品18毛片一区二区 | 在线91观看 | 欧美日韩精品在线播放 | 人人模人人爽 | 中文字幕精品一区二区精品 | 久久久精品久久日韩一区综合 | 激情偷乱人伦小说视频在线观看 | 在线免费中文字幕 | 狠狠色丁香久久婷婷综 | 99久久精品午夜一区二区小说 | 精品在线观看国产 | 亚洲免费av观看 | 久久99精品国产麻豆婷婷 | 国产中文字幕第一页 | 亚洲美女免费精品视频在线观看 | 亚洲午夜精品久久久 | 欧洲激情在线 | 日韩精品一区电影 | av免费成人 | 超碰97在线资源 | 亚洲精品av中文字幕在线在线 | 欧美嫩草影院 | 色 免费观看 | 97成人精品视频在线观看 | 日韩精品第一区 | 国产一区免费视频 | 国产精品中文字幕在线播放 | 亚洲成人二区 | 99久久99久久精品 | 国产99亚洲 | 涩av在线 | 久久国产欧美日韩精品 | 成人免费 在线播放 | 精品欧美在线视频 | 日韩一区二区免费在线观看 | 国产日韩欧美在线观看 |