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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 线程退出 signal,Linux signal 那些事儿 (3)

發布時間:2023/12/19 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 线程退出 signal,Linux signal 那些事儿 (3) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇博客,想集中在signal 與線程的關系上,順帶介紹內核signal相關的結構。如何組織我其實并沒想好,想到哪就寫到哪里吧。主題一定會落在signal之內而不跑題。

提到signal與thread的關系,就得先提POSIX標準。POSIX標準決定了Linux為何將signal如此實現:

1 信號處理函數必須在多線程應用的所有線程之間共享,但是,每個線程要有自己的掛起信號掩碼和阻塞信號掩碼。

2 POSIX 函數kill/sigqueue必須面向所有的多線程應用而不是某個特殊的線程。

3 每個發給多線程應用的信號僅傳送給1個線程,這個線程是由內核從不會阻塞該信號的線程中隨意選出。

4 如果發送一個致命信號到多線程,那么內核將殺死該應用的所有線程,而不僅僅是接收信號的那個線程。

上面是POSIX標準,也就是提出來的要求,Linux要遵循POSIX標準,那Linux是怎么做到的呢?

到了此處,我們需要理清一些基本的概念:

struct task_struct {

pid_t pid;

pid_t tgid

.....

struct task_struct *group_leader;????/* threadgroup leader */

......

struct list_head thread_group;

....

}

從字面意思上看 pid,是process id,其則不然,pid是thread id。從字面意思上看,tgid是thread group id,其則是真正的pid。

有點繞是不是?對于一個多線程的程序,無論是哪個線程執行getpid,結果都是一樣的,最終返回的同一個值 tgid。如果我們實現了gettid(很不幸的是glibc沒有這個函數,所以我們要用syscall),我們就會發現,各個線程返回的值不同,此時,返回的值是內核task_struct中的pid。對于多線程應用/proc/pid/task可以看到的,就是線程的thread id,也就是task_struct中的pid。

我在我的博文Linux線程之線程 線程組 進程 輕量級進程(LWP)提到了這個問題。我不想多浪費筆墨贅述。

group leader字段,指向線程組的第一個線程。對于我們自己的程序而言,main函數所在的線程,也就是線程組的第一個線程,所以group leader就會他自己。一旦用pthread_create創建了線程,那么main所在的線程,還有創建出來的線程,隸屬于同一個線程組,線程的group leader還是main函數所在的線程id。

thread_group,同一線程組的所有線程的隊列。對于group_leader,這是一個隊列頭,對于同一線程組的其他線程,通過這個字段掛入隊列。可以根據這個隊列,遍歷線程組的所有線程。

是時候看看內核代碼了,下面的代碼屬于do_fork函數及copy_process函數的一些代碼。

p->pid = pid_nr(pid);

p->tgid = p->pid;

if (clone_flags & CLONE_THREAD)//創建線程,tgid等于當前線程的

p->tgid = current->tgid;

p->group_leader = p;

INIT_LIST_HEAD(&p->thread_group);

if (clone_flags & CLONE_THREAD) {?//線程處理部分,group_leader都是第一個線程。同時掛入隊列

current->signal->nr_threads++;

atomic_inc(&current->signal->live);

atomic_inc(&current->signal->sigcnt);

p->group_leader=current->group_leader;

list_add_tail_rcu(&p->thread_group, &p->group_leader->thread_group);

}

代碼表明,第一個線程呢,pid和tgid相同,都是分配的那個pid,group_leader也是自己。后面第二個線程,pid是自己的,但是tgid 等于創建者的tgid,group_leader指向第一個線程的task_struct. 后面創建的所有的線程,都會掛入隊列,方便遍線程組的所有線程。

有了線程組的概念,我們就可以進一步解釋signal相關的內容了。

/* signal handlers */

struct signal_struct *signal;

struct sighand_struct *sighand;

sigset_t blocked, real_blocked;

sigset_t saved_sigmask;????/* restored if set_restore_sigmask() was used */

struct sigpending pending;

線程組里面的所有成員共享一個signal_struct類型結構,同一線程組的多線程的task_struct 中的signal指針都是指向同一個signal_struct。sighand成員變量也是如此,統一個線程組的多個線程指向同一個signalhand_struct結構。

static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)

{

struct signal_struct *sig;

if (clone_flags & CLONE_THREAD) //線程,直接返回,表明同一線程組共享

return 0;

sig = kmem_cache_zalloc(signal_cachep, GFP_KERNEL);

tsk->signal = sig;

if (!sig)

return -ENOMEM;

sig->nr_threads = 1;

atomic_set(&sig->live, 1);

atomic_set(&sig->sigcnt, 1);

init_waitqueue_head(&sig->wait_chldexit);

sig->curr_target = tsk;

。。。。

}

static int copy_sighand(unsigned long clone_flags, struct task_struct *tsk)

{

struct sighand_struct *sig;

if (clone_flags & CLONE_SIGHAND) {

atomic_inc(&current->sighand->count); //如果發現是線程,直接講引用計數++,無需分配sighand_struct結構

return 0;

}

sig = kmem_cache_alloc(sighand_cachep, GFP_KERNEL);

rcu_assign_pointer(tsk->sighand, sig);

if (!sig)

return -ENOMEM;

atomic_set(&sig->count, 1);

memcpy(sig->action, current->sighand->action, sizeof(sig->action));

return 0;

}

這就基本實現了多線程應用中,信號處理程序是共享的,因為他們共用一個signalhand_struct。

上一篇博文提到,signal->shared_pending 和pending兩個掛起信號相關的數據結構,此處我們可以具體講解了。signal是線程組共享的結構,自然下屬的shared_pending也是線程組共享的。就像POSIX提到的,kill/sigqueue發送信號,發送的對象并不是線程組某個特定的線程,而是整個線程組。自然,如果kernel會將信號記錄在全線程組共享的signal->shared_pending,表示,線程組收到信號X一枚。

有筒子說了,我就要給某個特定的線程發信號,有沒有辦法,內核怎么辦?這是個好問題。

int tkill(int tid, int sig);

int tgkill(int tgid, int tid, int sig)

這兩個API是給線程組特定線程發信號的,毫不意外,內核會將信號記錄在線程自己的結構pending中。

pending = group ? &t->signal->shared_pending : &t->pending;

對于kill/sigqueue,__send_signal傳進來的是group是true,對于tkill/tgkill傳進來的是false。會將信號寫入相應的掛起信號位圖。

static int __send_signal(int sig, struct siginfo *info, struct task_struct *t,

int group, int from_ancestor_ns)

{

struct sigpending *pending;

struct sigqueue *q;

int override_rlimit;

int ret = 0, result;

assert_spin_locked(&t->sighand->siglock);

result = TRACE_SIGNAL_IGNORED;

if (!prepare_signal(sig, t,

from_ancestor_ns || (info == SEND_SIG_FORCED)))

goto ret;

pending=group? &t->signal->shared_pending: &t->pending; //?tkill用的自己的pending,

//?kill/sigqueue用的線程組共享的signal->shared_pending

/*

* Short-circuit ignored signals and support queuing

* exactly one non-rt signal, so that we can get more

* detailed information about the cause of the signal.

*/

result = TRACE_SIGNAL_ALREADY_PENDING;

if (legacy_queue(pending, sig))

goto ret;

result = TRACE_SIGNAL_DELIVERED;

/*

* fast-pathed signals for kernel-internal things like SIGSTOP

* or SIGKILL.

*/

if (info == SEND_SIG_FORCED)

goto out_set;

/*

* Real-time signals must be queued if sent by sigqueue, or

* some other real-time mechanism. It is implementation

* defined whether kill() does so. We attempt to do so, on

* the principle of least surprise, but since kill is not

* allowed to fail with EAGAIN when low on memory we just

* make sure at least one signal gets delivered and don't

* pass on the info struct.

*/

if (sig < SIGRTMIN)

override_rlimit = (is_si_special(info) || info->si_code >= 0);

else

override_rlimit = 0;

q = __sigqueue_alloc(sig, t, GFP_ATOMIC | __GFP_NOTRACK_FALSE_POSITIVE,

override_rlimit);

if (q) {

list_add_tail(&q->list, &pending->list);

switch ((unsigned long) info) {

case (unsigned long) SEND_SIG_NOINFO:

q->info.si_signo = sig;

q->info.si_errno = 0;

q->info.si_code = SI_USER;

q->info.si_pid = task_tgid_nr_ns(current,

task_active_pid_ns(t));

q->info.si_uid = from_kuid_munged(current_user_ns(), current_uid());

break;

case (unsigned long) SEND_SIG_PRIV:

q->info.si_signo = sig;

q->info.si_errno = 0;

q->info.si_code = SI_KERNEL;

q->info.si_pid = 0;

q->info.si_uid = 0;

break;

default:

copy_siginfo(&q->info, info);

if (from_ancestor_ns)

q->info.si_pid = 0;

break;

}

userns_fixup_signal_uid(&q->info, t);

} else if (!is_si_special(info)) {

if (sig >= SIGRTMIN && info->si_code != SI_USER) {

/*

* Queue overflow, abort. We may abort if the

* signal was rt and sent by user using something

* other than kill().

*/

result = TRACE_SIGNAL_OVERFLOW_FAIL;

ret = -EAGAIN;

goto ret;

} else {

/*

* This is a silent loss of information. We still

* send the signal, but the *info bits are lost.

*/

result = TRACE_SIGNAL_LOSE_INFO;

}

}

out_set:

signalfd_notify(t, sig);

sigaddset(&pending->signal,sig);//修改位圖,表明該信號存在掛起信號。

complete_signal(sig, t, group);

ret:

trace_signal_generate(sig, info, t, group, result);

return ret;

}

線程存在一個很讓人迷惑的問題,如何讓線程組的所有線程一起退出。我們都知道,多線程的程序有一個線程訪問了非法地址,引發段錯誤,會造成所有線程一起退出。這也是多線程程序脆弱的地方。但是如何做到的呢?

do_signal--->get_signal_to_deliver中,會選擇信號,如果發現需要退出,會執行do_group_exit。這個名字顧名思義了,線程組退出。

void

do_group_exit(int exit_code)

{

struct signal_struct *sig = current->signal;

BUG_ON(exit_code & 0x80); /* core dumps don't get here */

if (signal_group_exit(sig))

exit_code = sig->group_exit_code;

else if (!thread_group_empty(current)) {

struct sighand_struct *const sighand = current->sighand;

spin_lock_irq(&sighand->siglock);

if (signal_group_exit(sig))

/* Another thread got here before we took the lock. */

exit_code = sig->group_exit_code;

else {

sig->group_exit_code = exit_code;

sig->flags = SIGNAL_GROUP_EXIT;

zap_other_threads(current);

}

spin_unlock_irq(&sighand->siglock);

}

do_exit(exit_code);

/* NOTREACHED */

}

如果是多線程,會走入到else中,主要的操作都在zap_other_threads函數中:

/*

* Nuke all other threads in the group.

*/

int zap_other_threads(struct task_struct *p)

{

struct task_struct *t = p;

int count = 0;

p->signal->group_stop_count = 0;

while_each_thread(p, t) {

task_clear_jobctl_pending(t, JOBCTL_PENDING_MASK);

count++;

/* Don't bother with already dead threads */

if (t->exit_state)

continue;

sigaddset(&t->pending.signal, SIGKILL);

signal_wake_up(t, 1);

}

return count;

}

不多說了,就是給每一個線程都掛上一個SIGKILL的信號,當CPU選擇線程執行時候的時候,自然會處理這個信號,而對SIGKILL的處理,會再次調用do_group_exit。這一次會調用do_exit退出。當線程組所有進程都執行過之后,整個線程組就消亡了。

講完這些,需要講block了。我第一篇就講到,我們有時候需要阻塞某些信號。POSIX說了多線程中每個線程要有自己的阻塞信號。不必說,task_struct中的blocked就是阻塞信號位圖。我們的glibc的sigprocmask函數,就是設置進程的blocked。

那些block的信號為何不能傳遞,內核是怎么做到的?

int next_signal(struct sigpending *pending, sigset_t *mask)

{

unsigned long i, *s, *m, x;

int sig = 0;

s = pending->signal.sig;

m = mask->sig;

/*

* Handle the first word specially: it contains the

* synchronous signals that need to be dequeued first.

*/

x = *s &~ *m;

if (x) {

if (x & SYNCHRONOUS_MASK)

x &= SYNCHRONOUS_MASK;

sig = ffz(~x) + 1;

return sig;

}

switch (_NSIG_WORDS) {

default:

for (i = 1; i < _NSIG_WORDS; ++i) {

x = *++s &~ *++m;

if (!x)

continue;

sig = ffz(~x) + i*_NSIG_BPW + 1;

break;

}

break;

case 2:

x = s[1] &~ m[1];

if (!x)

break;

sig = ffz(~x) + _NSIG_BPW + 1;

break;

case 1:

/* Nothing to do */

break;

}

return sig;

}

m就是task_struct中的blocked,阻塞的信號就不會不會被取出傳遞了。很有意思的一點是信號傳遞的順序。在Linux programming interface一書中提到小signo優先的策略,比如SIGINT(2)和SIGQUIT(3)同時存在,SIGINT(2)?先deliver,然后才是SIGQUIT(3).我們看代碼,很有意思的是有同步信號:

#define SYNCHRONOUS_MASK \

(sigmask(SIGSEGV) | sigmask(SIGBUS) | sigmask(SIGILL) | \

sigmask(SIGTRAP) | sigmask(SIGFPE) | sigmask(SIGSYS))

有SIGSEGV SIGBUS SIGILL SIGTRAP SIGFPE SIGSYS,那么這幾個信號優先。沒有這幾個信號,按照小信號優先。當然了,這些是Linux kernel的實現,畢竟不是POSIX標準,不可依賴這種順序。

另外,dequeue很有意思,先去task_struct中的pending中取,取不到再去整個線程組共享的shered_pending位圖去取。

int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)

{

int signr;

/* We only dequeue private signals from ourselves, we don't let

* signalfd steal them

*/

signr = __dequeue_signal(&tsk->pending, mask, info);

if (!signr) {

signr = __dequeue_signal(&tsk->signal->shared_pending,

mask, info);

。。。。

}

參考文獻:

1

總結

以上是生活随笔為你收集整理的linux 线程退出 signal,Linux signal 那些事儿 (3)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

日韩高清一区在线 | 精品国产aⅴ一区二区三区 在线直播av | 激情开心站 | 一级片在线 | 狠狠艹夜夜干 | 深爱激情五月综合 | 日本精品久久久久久 | www操操| 免费激情网 | 手机在线黄色网址 | 国产高清在线精品 | 人人讲| 国产视频二区三区 | 91天堂影院 | av资源免费看 | 国产亚洲va综合人人澡精品 | 91在线操 | 日韩精品一区二区不卡 | 亚洲精品一区二区三区高潮 | 精品国产伦一区二区三区免费 | 成人9ⅰ免费影视网站 | 91桃色国产在线播放 | 欧美日韩免费一区二区 | 日韩在线视频网址 | 日韩在线理论 | 午夜电影久久久 | 97涩涩视频| 欧美在线视频一区二区 | 精品国产一区在线观看 | 久久97久久 | 国产视频亚洲 | 国产91精品一区二区麻豆网站 | 国产97超碰 | 高潮久久久 | 91c网站色版视频 | 首页国产精品 | 三级动态视频在线观看 | 97日日碰人人模人人澡分享吧 | 99精品在线 | 日韩色一区二区三区 | 久草视频首页 | 玖草影院| 91重口视频 | 日韩素人在线观看 | 成片免费 | 国产精品99久久99久久久二8 | 天天爽综合网 | 亚洲电影免费 | 国产精品剧情在线亚洲 | 国产盗摄精品一区二区 | 日韩区欠美精品av视频 | 日韩专区在线 | 国产精品v a免费视频 | 久久综合中文字幕 | 成人在线你懂得 | 中文字幕a∨在线乱码免费看 | 久久国产女人 | 亚洲狠狠操 | 97色在线| 久久爱资源网 | 日韩电影中文,亚洲精品乱码 | 成人免费观看在线视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲一区二区三区四区在线视频 | 91视频在线看 | 亚洲三级毛片 | 国产 中文 日韩 欧美 | av在线影视 | 久久久黄视频 | 亚洲国产操| 国语自产偷拍精品视频偷 | 欧美一区三区四区 | 在线观看免费视频你懂的 | 性色大片在线观看 | 国产精品四虎 | 久久99久久99久久 | 丁香九月激情综合 | 超碰国产人人 | 狠狠激情中文字幕 | 欧美日韩国产一区二区三区在线观看 | 国产精品久免费的黄网站 | 九九视频免费观看视频精品 | 欧美一级大片在线观看 | 久久69精品 | 久久精品国产亚洲a | 午夜免费视频网站 | 亚洲午夜精品久久久 | 亚洲精品乱码久久久久久高潮 | 欧美日韩亚洲在线观看 | a'aaa级片在线观看 | 国产精品亚洲片夜色在线 | 日韩三级在线 | 精品亚洲va在线va天堂资源站 | 91系列在线观看 | 久久免费精品 | 中文字幕视频一区 | 蜜桃视频精品 | 一级黄色片在线观看 | 久久精品久久精品久久39 | 国产欧美久久久精品影院 | 午夜精品导航 | 国产午夜影院 | 最近中文字幕大全中文字幕免费 | 一级片视频免费观看 | 黄色片网站 | 久久1区| free. 性欧美.com | 天天想夜夜操 | 日韩精品一区二区三区中文字幕 | 99精品免费网 | 亚洲精品免费在线播放 | 天天色天天操综合 | 激情视频久久 | 亚洲黄色片一级 | 久久免费在线视频 | 色丁香久久 | 成年人免费看的视频 | 91大神免费视频 | 丁香花在线观看免费完整版视频 | 国产黄色观看 | 中文字幕 国产视频 | 国产精品嫩草在线 | 99国产视频 | 碰超在线观看 | 日韩黄色一区 | 91精品啪 | 国产偷国产偷亚洲清高 | 亚洲专区在线 | 天天操天天操天天操天天操天天操 | 国产精品二区在线观看 | 91看片在线免费观看 | 亚洲精品视频在线免费 | 波多野结衣精品视频 | 国产成人在线综合 | 黄色日批网站 | 亚洲精品免费观看视频 | 92国产精品久久久久首页 | 色噜噜日韩精品欧美一区二区 | 韩国三级av在线 | 日韩免费电影一区二区三区 | 久久免费视频网 | 日本高清中文字幕有码在线 | 国产精品女同一区二区三区久久夜 | 国产不卡一| av成人免费在线看 | 国产精品自产拍在线观看蜜 | 麻豆传媒视频在线 | 色综合中文字幕 | 日韩精品中文字幕av | 69av免费视频 | 日韩一区精品 | 成人av在线一区二区 | 日韩理论在线播放 | www.97视频 | 成人久久18免费网站麻豆 | 不卡电影一区二区三区 | 日日夜夜天天射 | 天天操天天干天天综合网 | 日韩精品2区 | 久久久久久久久久久久久久av | 香蕉视频免费在线播放 | 天堂在线视频免费观看 | 欧美久久久久久久久久久久久 | 亚洲国产精品va在线看黑人动漫 | 久章草在线观看 | 亚洲狠狠操 | 88av视频 | 日韩视频欧美视频 | www.香蕉 | 成人宗合网 | 黄a网站 | 久久超碰97| 字幕网av | 亚洲精品国偷拍自产在线观看蜜桃 | 国产高清免费在线观看 | 91在线看视频免费 | 在线观看韩日电影免费 | 国产98色在线 | 日韩 | 中文字幕在线免费 | 日韩欧美精品在线观看视频 | 婷婷丁香五 | 一级α片 | 亚洲精品国产综合99久久夜夜嗨 | 手机看片1042 | av三区在线 | 成年人电影免费在线观看 | 日韩在线观看中文字幕 | 99久久精品免费一区 | 黄色在线免费观看网址 | 丁香高清视频在线看看 | 人人射网站 | 日本精品视频网站 | 国产精品中文字幕av | 福利久久久 | 亚洲国产手机在线 | 天堂在线v | 九九在线高清精品视频 | 国产免费国产 | av在线播放亚洲 | 国产成人在线一区 | 免费一级片久久 | 国产成人av免费在线观看 | 波多野结衣在线播放一区 | 日韩精品视频免费看 | 国外调教视频网站 | 久久久国际精品 | 久久综合精品一区 | 97超碰人人澡人人爱学生 | 国产精品久久久久久高潮 | 国产一区二区在线精品 | 91精品国产乱码在线观看 | 中文字幕黄色网址 | 在线观看黄a | 午夜性色 | 五月开心激情网 | 玖玖在线观看视频 | 特级片免费看 | adn—256中文在线观看 | 久久99在线视频 | 在线免费观看麻豆 | 中文字幕999| 国产精品高清在线 | 91在线视频精品 | 欧美日韩在线精品 | 国产永久网站 | 深夜男人影院 | 国产最新视频在线 | av福利在线| 中文字幕黄色网址 | 国产伦精品一区二区三区免费 | 伊人国产在线观看 | 亚洲在线视频观看 | 亚洲伦理中文字幕 | 一区二区三区中文字幕在线观看 | 免费又黄又爽视频 | av怡红院 | 中文字幕在线观看日本 | 玖玖精品视频 | 中文av不卡 | 成人理论电影 | 成人av久久| 就色干综合 | 六月丁香婷婷久久 | 亚洲视频在线观看免费 | aaa免费毛片 | 精品国产一区二区三区蜜臀 | 日韩综合一区二区三区 | 黄色片免费在线 | 992tv又爽又黄的免费视频 | 综合色在线观看 | 黄a在线看 | 亚洲一级片免费观看 | 日韩久久久久久久久久久久 | 中文字幕av网站 | 日韩av专区 | 亚洲.www| 国产精品亚洲成人 | 免费欧美精品 | 欧亚久久| 91色吧| 久久精品日韩 | 免费久久99精品国产 | 日韩精品电影在线播放 | adc在线观看 | 99精品免费在线观看 | 久久久精品国产免费观看同学 | 国产青春久久久国产毛片 | 手机在线永久免费观看av片 | 夜夜视频欧洲 | 有码中文在线 | 日韩精品一区二区免费视频 | 99中文字幕视频 | 97超碰超碰久久福利超碰 | 91在线蜜桃臀 | 精品av在线播放 | 色中射 | 久久激情小说 | 五月花丁香婷婷 | 玖玖玖影院 | 丁香六月婷婷综合 | 免费看黄色91| 国产精品嫩草影院123 | 亚洲精品乱码久久久久久高潮 | 亚洲一区二区精品 | 久久国内精品 | 国产男女爽爽爽免费视频 | 久久久影院一区二区三区 | 色噜噜在线观看视频 | 911香蕉| 国产资源网 | 日本精品免费看 | 99久久影院| 国产一区二区播放 | 99re在线视频观看 | 日韩中文在线播放 | 精品久久国产精品 | 久久久久国产精品一区二区 | 午夜精品久久久久久久99热影院 | 亚洲2019精品 | 亚洲区色| 色综合五月天 | 久久久久久久av麻豆果冻 | 久久无码精品一区二区三区 | 色久综合| 天天射天| 欧美精品xxx| 国产精品一区二区三区久久久 | 天天干天天爽 | 日韩四虎 | 91久久奴性调教 | 玖玖999 | 人人爽人人澡人人添人人人人 | 国产精品一区二区av日韩在线 | 久草在线最新 | 精品美女国产在线 | 国产麻豆精品免费视频 | 播五月综合 | 欧美有色 | 91av手机在线 | 精品一区二区三区在线播放 | 少妇bbb好爽 | 国产精品免费久久久久 | 日韩久久精品一区二区三区下载 | 亚洲欧美激情精品一区二区 | 激情久久久 | 国产一区高清在线观看 | 久草视频免费在线观看 | a黄色片在线观看 | 人人干天天干 | 天天干天天插伊人网 | 国产在线a免费观看 | 天天操天天草 | 日韩成人精品一区二区 | 中文字幕电影高清在线观看 | 99久久夜色精品国产亚洲96 | av片一区| 国产福利久久 | 免费毛片一区二区三区久久久 | 综合国产在线观看 | 亚洲激色 | 免费在线观看污网站 | 亚洲精品视 | 亚洲黄色软件 | 亚洲aⅴ在线观看 | 六月丁香综合网 | 免费日p视频 | 97超碰人人澡 | 91日韩免费 | 国产精品国产三级国产 | 美女视频黄在线 | 国产成人久久久77777 | 国产精品国产亚洲精品看不卡15 | 国产精品久久久网站 | 午夜精品久久久 | 麻豆精品在线视频 | 久久成 | 欧美综合在线视频 | 久青草影院 | av一区在线| 三级小视频在线观看 | 日韩av成人| 97福利在线 | 麻豆精品视频在线 | 久久久久久久久亚洲精品 | 国产精品免费看久久久8精臀av | 8x成人免费视频 | 国产+日韩欧美 | 日韩欧美精品在线视频 | 欧美日韩视频在线观看免费 | 日本中文字幕视频 | 中文字幕精品三级久久久 | 亚洲综合视频在线播放 | 一级黄色免费网站 | 中文字幕国内精品 | 久久99国产精品免费网站 | 日韩一区精品 | 黄色软件视频大全免费下载 | 正在播放 久久 | 视频在线观看入口黄最新永久免费国产 | 91精品国产91久久久久久三级 | 欧美精品久久久久久久久老牛影院 | 8x成人免费视频 | 香蕉日日 | 91丨九色丨蝌蚪丰满 | 综合天天| 免费日韩高清 | 久久久99国产精品免费 | 欧美一区成人 | 精品中文字幕在线播放 | 97人人模人人爽人人喊中文字 | 日日夜夜爱 | 久久免费看视频 | 国产专区欧美专区 | 六月色 | 午夜精品影院 | 蜜臀久久99静品久久久久久 | 伊人婷婷激情 | 69热国产视频| 日韩精品一区二区三区不卡 | 欧美色综合天天久久综合精品 | 精品99在线视频 | 日韩在线观看小视频 | 国产日韩高清在线 | 午夜在线日韩 | 精品在线一区二区三区 | 国产一区视频导航 | 国产精品刺激对白麻豆99 | 一区二区在线影院 | 欧美视频一区二 | 丁香久久久| 天堂av观看 | 亚洲精品美女免费 | 中文字幕 第二区 | 国产精品毛片一区二区 | 天天色视频 | 网站在线观看日韩 | 丝袜美腿在线播放 | 国产资源站 | 欧美另类重口 | 成人av一区二区兰花在线播放 | 国产福利一区二区在线 | 天天色天天射综合网 | 伊人天堂av | 日本精油按摩3 | 99成人精品 | 国产破处视频在线播放 | 免费视频久久久久久久 | 人人干人人超 | 日韩av一区二区在线播放 | 国产福利在线不卡 | 国产xx在线 | 久久国产精品一二三区 | 久久国内精品99久久6app | 激情五月激情综合网 | 精品毛片一区二区免费看 | 五月天狠狠操 | 欧美日韩性 | 精品久久久久久久久久岛国gif | 毛片无卡免费无播放器 | 东方av在| 欧美日韩国产综合一区二区 | 91传媒在线播放 | 美女黄色网在线播放 | 国产1区2区3区精品美女 | 久久综合影视 | 中文字幕乱码在线播放 | 在线视频日韩精品 | 国产成人精品日本亚洲999 | 国产精品区二区三区日本 | 超碰97免费在线 | 一区二区三区免费 | 日韩成片| 国产成人一级电影 | 国产最新在线视频 | 国产人成一区二区三区影院 | 国产在线a免费观看 | 国产高清永久免费 | 国产色婷婷精品综合在线手机播放 | 婷婷综合导航 | 91九色在线观看视频 | 免费看三片 | 久久久99精品免费观看app | 免费在线色 | 少妇bbb| 日本h视频在线观看 | 91人人插| 天堂av一区二区 | 欧美另类交在线观看 | 欧美韩日在线 | 激情综合网在线观看 | 成人动漫一区二区三区 | 欧美最猛性xxx | 免费a视频 | 久久99视频精品 | 中文字幕在线播放第一页 | 成人精品在线 | 久草久| 手机看片99 | 亚洲免费精品视频 | 久久精品日本啪啪涩涩 | 亚洲伦理精品 | 天堂中文在线播放 | 国产色中涩 | 国产精品免费观看国产网曝瓜 | 色999视频 | 久久九九影院 | 久久99欧美| 9999在线视频 | 蜜桃av久久久亚洲精品 | 99视频| 最新影院 | 97精品欧美91久久久久久 | 摸bbb搡bbb搡bbbb | 日韩极品视频在线观看 | 免费av视屏 | 综合色婷婷| 国产精品美女久久久久aⅴ 干干夜夜 | 色网站视频 | 香蕉久草 | 国产98色在线 | 日韩 | 亚洲男男gaygay无套 | 日韩伦理一区二区三区av在线 | 女人18精品一区二区三区 | 亚洲黄色免费 | 五月婷婷一区二区三区 | 国产一区二区精品91 | 五月天综合网站 | 久久久人人爽 | 日韩av片免费在线观看 | 天天操天天综合网 | 99热国产在线中文 | 97精品超碰一区二区三区 | 黄色中文字幕在线 | 亚洲国产精品久久久久久 | 亚洲精品视频在线免费 | 国内精品国产三级国产aⅴ久 | 久久国产精品色婷婷 | 免费看黄在线观看 | 国产精品麻豆免费版 | 免费网站看v片在线a | www.操.com| 午夜久久影院 | 精品久久久99 | 午夜精品久久久久久久99无限制 | 欧美一级视频一区 | 日韩在线视频网 | 中文字幕在线有码 | 国产精品一区二区久久 | 在线观看国产区 | 久久久久高清毛片一级 | 久久一区二区三区国产精品 | 人人人爽| 欧美日本高清视频 | 在线一二三四区 | 欧美另类交人妖 | 水蜜桃亚洲一二三四在线 | 精品国产电影一区二区 | 麻豆精品国产传媒 | 国产精品免费一区二区三区 | 日韩电影精品一区 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 久久精品播放 | 91综合视频在线观看 | 久久国产精品一区二区三区 | 一本之道乱码区 | 国产清纯在线 | 国产成人久久精品77777 | 91日韩在线专区 | 久久精品中文字幕少妇 | 最近中文字幕完整视频高清1 | 狠狠狠色丁香综合久久天下网 | 欧美人操人 | 亚洲精品乱码久久久久久按摩 | 国产日韩欧美自拍 | 99热在线国产 | 久久精品99国产精品亚洲最刺激 | 国产在线观看二区 | 中文字幕91 | 久久国产精品免费 | 日韩女同一区二区三区在线观看 | 国产日韩一区在线 | 欧美日韩免费在线视频 | 婷婷色av| 丁香网五月天 | 中文字幕 国产专区 | 久久免费国产视频 | 91理论电影 | 亚洲精品欧美视频 | 五月天电影免费在线观看一区 | 国产激情久久久 | 亚洲精品欧美专区 | 日韩精品一区二区三区不卡 | 五月婷婷综合网 | 成人h动漫精品一区二 | 成人wwwxxx视频 | 91亚瑟视频| 91麻豆精品国产自产在线 | 黄色免费网战 | 国产精品亚洲a | 国产精品综合在线观看 | 五月综合激情婷婷 | 久久精品美女视频网站 | 69国产盗摄一区二区三区五区 | 一本一本久久a久久精品综合小说 | 999久久久国产精品 高清av免费观看 | www.777奇米 | 久久精品视频国产 | 丁香视频| 国产高清免费在线观看 | 九九九热| 视频在线观看99 | 一区二区三区不卡在线 | 黄色影院在线免费观看 | 黄av免费在线观看 | 国产成人精品一区二区三区福利 | www.777奇米 | 国产精品久久久久久69 | 啪啪免费视频网站 | 免费亚洲黄色 | 日韩美女一级片 | 狠狠操.com | 国产精品久久在线 | 久久艹影院 | 中文字幕 国产 一区 | 91麻豆网 | 特级黄色视频毛片 | 国内精品久久久久影院优 | 亚洲综合在线五月 | 91麻豆精品国产91久久久久 | 成 人 黄 色 视频播放1 | 久久久久亚洲精品 | 久久久久久看片 | 黄色网中文字幕 | 国产成人精品av久久 | 久精品视频在线 | 在线国产中文字幕 | 国产精品毛片一区视频播 | 又黄又爽又刺激的视频 | 丝袜美女视频网站 | av在线免费网站 | 成人在线视频免费观看 | 日韩乱码在线 | 黄色精品久久 | 日韩理论在线视频 | 在线精品观看国产 | 久久久久激情视频 | 亚洲成人动漫在线观看 | 亚洲精品合集 | 免费电影播放 | 九九视频在线观看视频6 | 国产99久久久国产 | 美女网站视频免费都是黄 | 国产精品久久久久四虎 | 国产精品美女久久久久aⅴ 干干夜夜 | 国产精品网站一区二区三区 | av电影一区 | 综合视频在线 | 成人激情开心网 | 久久综合中文字幕 | 久久人人爽人人片 | 国产精品麻豆免费版 | 国产精品毛片久久久久久久久久99999999 | 狠狠色婷婷丁香六月 | 午夜精品一区二区三区在线 | 日韩一级黄色大片 | 精品日韩中文字幕 | 国产精品免费不卡 | 欧美成人性网 | 狠狠的干狠狠的操 | 久久精品国产一区二区三 | 国产一区欧美一区 | 欧美欧美 | 免费高清在线视频一区· | 亚洲91精品| 日韩特级片 | 日本午夜在线亚洲.国产 | 91九色pron| 天天干天天做天天爱 | 成年人免费观看国产 | 在线观看视频免费播放 | 黄色影院在线免费观看 | 99视频在线播放 | av电影在线免费观看 | 精品久久久久一区二区国产 | 婷婷视频在线 | 国产伦精品一区二区三区高清 | 亚洲国产三级在线 | 久久精品男人的天堂 | 偷拍精偷拍精品欧洲亚洲网站 | 色婷婷免费视频 | 探花视频在线观看免费 | 成年人免费看 | 亚洲精品mv在线观看 | 婷婷综合视频 | 特级毛片网 | 激情黄色av| 色插综合 | 日韩综合一区二区三区 | 免费黄a大片| 成人免费网站在线观看 | 精品一区 在线 | 天天射天天色天天干 | 国产精品视频地址 | 99re在线视频观看 | 天天操天天干天天 | 99精品久久久久久久久久综合 | 国产精品视屏 | 亚洲理论在线 | 91视频成人免费 | www成人av| 色婷婷亚洲| 美女网站黄在线观看 | 欧美久久久久久久 | 国产精品com | 国产精品久久久久永久免费观看 | 亚洲三级视频 | 九九九热精品免费视频观看 | 婷婷在线免费观看 | 日本黄网站 | 亚洲人成人在线 | 五月天亚洲综合小说网 | 成 人 免费 黄 色 视频 | 精品国产色 | 91网页版免费观看 | 欧美精品一区二区在线播放 | 91久久黄色 | 狠狠操狠狠操 | 日韩成人欧美 | 99久久99久久精品国产片果冰 | 在线播放 日韩专区 | 黄色一区二区在线观看 | 高清精品在线 | 国产一区高清在线观看 | www夜夜操com | 在线va视频 | 黄色毛片大全 | 五月色婷 | 亚洲视频第一页 | 色先锋av资源中文字幕 | 免费观看www小视频的软件 | 麻豆一区二区三区视频 | 国产资源中文字幕 | 伊人亚洲综合网 | 日韩大片在线观看 | 久久久久女人精品毛片九一 | 五月天久久久久 | 久久99中文字幕 | 久久调教视频 | 97色婷婷成人综合在线观看 | 亚洲最新合集 | 欧美视频在线二区 | 欧美性大战久久久久 | 国产69久久久欧美一级 | 精品国产欧美一区二区三区不卡 | 欧美性生爱 | 深爱婷婷 | 午夜精品一区二区三区在线播放 | 国产视频2| 成人综合婷婷国产精品久久免费 | 婷婷色综 | 九九九九九九精品任你躁 | 日批视频在线观看免费 | 一区二区久久久久 | 国产成人精品aaa | 亚洲涩涩涩 | 久草在线视频中文 | av在线观| 99久在线精品99re8热视频 | av在线色| 麻豆一区在线观看 | 亚洲精品视频网站在线观看 | 国产精品永久久久久久久www | 亚洲欧美视频 | 中日韩欧美精彩视频 | 亚洲影视九九影院在线观看 | 日韩av电影手机在线观看 | 黄在线免费看 | 日本在线观看中文字幕无线观看 | 国产韩国精品一区二区三区 | 国产 在线 高清 精品 | 国产精品99久久免费观看 | 在线观看av免费 | 久久久久女人精品毛片九一 | 免费在线观看成人小视频 | 日日干av| 视频在线99 | 一区二区三区四区五区在线 | 99中文字幕| 人人爱人人添 | 国产美女在线精品免费观看 | 人人爽人人做 | 亚洲 欧洲 国产 精品 | 久久久国产99久久国产一 | 麻豆影视在线免费观看 | 亚洲精品久久久久久久蜜桃 | 97精品国产一二三产区 | 四虎免费在线观看 | 在线免费视频一区 | 天堂在线视频免费观看 | 五月婷婷丁香在线观看 | 久操伊人 | 天天射天 | 久久免费激情视频 | 国产精品精品国产色婷婷 | 精品视频资源站 | 在线看成人av | 亚洲精品视频二区 | 久久久久日本精品一区二区三区 | 91精品国产一区二区在线观看 | 欧美调教网站 | 国产亚洲精品中文字幕 | 日本一区二区三区免费看 | 91在线免费播放 | 91丨九色丨国产丨porny精品 | 精品国产人成亚洲区 | 久久在线精品视频 | www.成人sex | 欧美在线视频日韩 | 亚洲国产中文字幕在线观看 | 免费色视频在线 | 婷婷亚洲激情 | 在线看不卡av | 国产亚洲精品久久久久久移动网络 | 色噜噜狠狠狠狠色综合 | av888.com| 久久精品高清视频 | 国产一区二区免费看 | 五月婷婷伊人网 | 国产精品mv在线观看 | 国产四虎在线 | 久久亚洲欧美日韩精品专区 | 久久人人爽人人爽 | 婷婷久操 | 亚洲电影av在线 | 亚洲最大在线视频 | 黄色三级久久 | 最新中文字幕在线播放 | 四虎影视成人永久免费观看视频 | 久久官网 | 久久免费国产精品1 | 国产精品一区二区免费看 | av在线亚洲天堂 | 草在线视频 | 亚洲mv大片欧洲mv大片免费 | 日韩在线免费观看视频 | 成人av片在线观看 | 日韩精品免费专区 | 99久久99久久精品免费 | 亚洲精品99久久久久久 | 国产高清一级 | 碰超在线观看 | 一区二区精品在线 | 亚洲欧美在线观看视频 | 99久久精品久久亚洲精品 | 欧美激情精品久久久久久变态 | 久久99国产精品免费网站 | 美女免费视频一区 | 国产精品久久久视频 | av在线免费在线观看 | 免费毛片一区二区三区久久久 | 亚洲一区二区三区四区在线视频 | 日韩精品一区二区三区在线播放 | 国产精品第十页 | 亚洲91中文字幕无线码三区 | 精品 一区 在线 | 精品视频成人 | 国产精品麻豆99久久久久久 | 最近字幕在线观看第一季 | 色婷婷成人网 | 青草视频在线看 | 欧美性高跟鞋xxxxhd | 高潮毛片无遮挡高清免费 | 婷婷在线资源 | 免费在线观看日韩欧美 | 69欧美视频 | 精品亚洲网 | 99视频在线观看一区三区 | 黄色小说在线免费观看 | 亚洲精品乱码久久久久久高潮 | 欧美精品乱码久久久久久按摩 | 在线看污网站 | 最近更新好看的中文字幕 | 久久激情婷婷 | 在线观看韩国av | 草久在线观看视频 | 91在线观看视频 | 婷婷福利影院 | 丁香五月亚洲综合在线 | 久久久久精 | 91精品国产成人www | 天天玩天天干 | 久久大视频 | 日日操日日| 亚洲婷婷网 | 天堂视频中文在线 | 国产精品视频地址 | 日韩欧美在线一区 | 精品久久久久久久久久久久久 | 日韩欧美xxxx| 在线精品视频在线观看高清 | 丁香婷婷久久久综合精品国产 | 国产精品theporn | 久久久久久久av麻豆果冻 | 91在线视频免费播放 | 亚洲天堂网视频在线观看 | 成人av免费电影 | 国产91在线看| 黄污视频大全 | 久久天天综合网 | 911久久香蕉国产线看观看 | 久久综合免费视频影院 | 日韩黄色一级电影 | av高清在线观看 | 欧洲亚洲女同hd | 最新高清无码专区 | 91精品专区 | 五月婷婷综合在线观看 | 又黄又爽又无遮挡免费的网站 | www.久久久| 99久久久国产精品美女 | 天堂视频中文在线 | 人人干人人超 | 国产一区二区网址 | 国产美女免费视频 | 91九色综合| 久久综合网色—综合色88 | 91xav | 国产91在线播放 | 欧美精品乱码久久久久久 | 色橹橹欧美在线观看视频高清 | 精品福利片 | 99久久99久久综合 | 国产在线专区 | 国产午夜精品久久久久久久久久 | 九九欧美 | 婷婷四房综合激情五月 | 欧洲亚洲女同hd | 中文字幕 国产视频 | 国产成人精品一区二区三区福利 | 草久中文字幕 | 99免费在线播放99久久免费 | 欧美日韩国产伦理 | 国产黄影院色大全免费 | 色综合夜色一区 | 黄色片亚洲 | 日韩免费在线观看 | 精品久久精品久久 | 天天干天天操天天拍 | 六月激情婷婷 | 少妇视频在线播放 | 狠狠色综合网站久久久久久久 | 视频99爱 | 天天亚洲 | 免费在线激情电影 | 色欧美88888久久久久久影院 | 久久久久高清毛片一级 | 久久一二区 | 九九九九九精品 | 亚洲一级黄色片 | 五月天亚洲激情 | 天天干天天上 | 久久精品导航 | 色综合久久88色综合天天6 | 99精品国产亚洲 | 精品国内自产拍在线观看视频 | 最新国产精品拍自在线播放 | 最近免费观看的电影完整版 | 日韩伦理一区二区三区av在线 | 99久久超碰中文字幕伊人 | 国内揄拍国内精品 | 日韩免费一区 | 99精品视频在线观看免费 | 男女拍拍免费视频 | 丝袜美女视频网站 | av在线成人| 四虎永久免费在线观看 | 日本成人中文字幕在线观看 | 高清精品久久 | 在线播放视频一区 | 伊人av综合 | 久久免费a | 日韩a欧美 | 久久精品网站免费观看 | av成人免费 | 中文字幕精品在线 | bayu135国产精品视频 | 欧美成人久久 | 久热色超碰 | 在线观看成人福利 | 国产精品久久久久久久免费观看 | 久久久香蕉视频 | 99精品一区二区三区 | av大全在线看| 久久99精品国产麻豆宅宅 | 免费网站看av片 | 1000部18岁以下禁看视频 | 99热这里精品 | 国产精品精品久久久久久 | 国内精品免费久久影院 | 国产手机在线观看 | 婷婷丁香色 | 天天干天天做天天操 | 国产系列精品av | 色综合天天天天做夜夜夜夜做 | 欧美日本在线视频 | 亚洲免费视频在线观看 | 黄色美女免费网站 | 13日本xxxxxⅹxxx20| 97在线免费观看视频 | 日韩视频免费在线观看 | 中文字幕av日韩 | 蜜臀av夜夜澡人人爽人人桃色 | 蜜臀av网站 | 精品视频免费播放 | 国产精品欧美久久久久三级 | 黄色最新网址 | 国模精品一区二区三区 | 精品久久久久久久久久久久久 |