显示下一条  |  关闭

未明

......

 
 
 
 
 
 

Linux Memory Barrier 内核屏障

2012-4-16 16:56:22 阅读5 评论0 162012/04 Apr16

内核中定义的内存屏障原语有: 

#define barrier() __asm__ __volatile__("": : :"memory") 

#define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2) 

#define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2) 

#ifdef CONFIG_SMP 

#define smp_mb() mb() 

#define smp_rmb() rmb() 

#define smp_wmb() wmb() 

#define smp_read_barrier_depends() read_barrier_depends() 

#define set_mb(var, value) do { (void) xchg(&var, value); } while (0) 

#else 

#define smp_mb() barrier() 

#define smp_rmb() barrier() 

#define smp_wmb() barrier() 

作者  | 2012-4-16 16:56:22 | 阅读(5) |评论(0) | 阅读全文>>

shell字符串截取

2012-3-13 21:51:08 阅读7 评论0 132012/03 Mar13

shell字符串的截取的问题:

一、Linux shell 截取字符变量的前8位,有方法如下:

1.expr substr “$a” 1 8

2.echo $a|awk ‘{print substr(,1,8)}’

3.echo $a|cut -c1-8

4.echo $

5.expr $a : ‘\(.\\).*’

6.echo $a|dd bs=1 count=8 2>/dev/null

二、按指定的字符串截取

1、第一种方法:

${varible##*string} 从左向右截取最后一个string后的字符串

${varible#*string}从左向右截取第一个string后的字符串

${varible%%string*}从右向左截取最后一个string后的字符串

${varible%string*}从右向左截取第一个string后的字符串

“*”只是一个通配符可以不要

例子:

$ MYVAR=foodforthought.jpg

$ echo ${MYVAR##*fo}

rthought.jpg

$ echo ${MYVAR#*fo}

odforthought.jpg

2、第二种方法:${varible:n1:n2}:截取变量varible从n1到n2之间的字符串。

作者  | 2012-3-13 21:51:08 | 阅读(7) |评论(0) | 阅读全文>>

shell 去字符串中数字

2012-3-13 19:32:27 阅读6 评论0 132012/03 Mar13

${T/[0-9]/} #去除字符串T中第一个匹配数字

${T//[0-9]/} #去除字符串T中全部数字

${T/%[0-9]/} #去除字符串T中尾部匹配数字

${T%[0-9]} #去除字符串T中尾部匹配数字

${T%%[0-9]} #去除字符串T中尾部匹配数字

${T#[0-9]} #去除字符串T中开头匹配数字

作者  | 2012-3-13 19:32:27 | 阅读(6) |评论(0) | 阅读全文>>

Shell

2010-10-7 13:30:10 阅读54 评论0 72010/10 Oct7

一、转“米”型进度显示

#!/bin/sh

while true

do

 for i in '-' '\\' '|' '/'

 do

  echo -ne "\033[1D$i"

  sleep 0.3

 done

done

exit

二、条形进度显示

#!/bin/sh

i=0

b=''

while [ $i -le 100 ]

do

 printf "[%-100s] %d%%\r" $b $i

 let "i=i+1"

 b=#$b

 sleep 0.2

done

echo ""

exit

三、Ramdisk制作

cd /tmp

dd if=/dev/zero of=ramdisk bs=1M count=2

mkfs.ext2 ramdisk

gzip -9 ramdisk (生成压缩镜像ramdisk.gz)

gzip -d ramdisk.gz  (生成解压镜像ramdisk)

四、选择菜单1

#!/bin/bash

作者  | 2010-10-7 13:30:10 | 阅读(54) |评论(0) | 阅读全文>>

Shell基础应用

2010-10-7 13:18:44 阅读63 评论0 72010/10 Oct7

在shell脚本中,可以用几种不同的方式读入数据:可以使用标准输入—缺省为键盘,或者指定一个文件作为输入。对于输出也是一样:如果不指定某个 文件作为输出,标准输出总是和终端屏幕相关联。如果所使用命令出现了什么错误,它也会缺省输出到屏幕上,如果不想把这些信息输出到屏幕上,也可以把这些信 息指定到一个文件中。

大多数使用标准输入的命令都指定一个文件作为标准输入。如果能够从一个文件中读取数据,何必要费时费力地从键盘输入呢?

本章我们将讨论以下内容:

使用标准输入、标准输出及标准错误。

重定向标准输入和标准输出。

本章全面讨论了shell对数据和信息的标准输入、标准输出,对重定向也做了一定的介绍。

5.1 echo

使用echo命令可以显示文本行或变量,或者把字符串输入到文件。它的一般形式为:

echo string

echo命令有很多功能,其中最常用的是下面几个:

\c 不换行。

\f 进纸。

\t 跳格。

\n 换行。

如果希望提示符出现在输出的字符串之后,可以用:

$ echo “What is your name :\c”

$ read name

上面的命令将会有如下的显示:

$ What is your name: □

其中“□”是光标。

如果想在输出字符之后,让光标移到下一行,可以用:

作者  | 2010-10-7 13:18:44 | 阅读(63) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 我要留言
 
 
 
留言列表加载中...
 
 
 
 
 
 
 
 

香港特别行政区 中西区 天秤座

 发消息  写留言

 
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 
 
 
心情随笔列表加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
博友列表加载中...
 
 
 
 
 
 
 
列表加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012

   
创建博客 登录  
 关注