// 변수 출력
crash> p bt_dev_p

bt_dev_p = $1 = (struct brcm_bt_dev *) 0xffffffc095fdf840

// structure 내부 data 출력
crash> struct brcm_bt_dev 0xffffffc095fdf840

struct brcm_bt_dev {
  c_dev = {
    kobj = {
      name = 0x0,
      entry = {
        next = 0xffffffc095fdf848,
        prev = 0xffffffc095fdf848
      },
      parent = 0x0,
      kset = 0x0,
[ snip ]

            next = 69
          }
        }
      }
    },
    task_list = {
      next = 0xffffffc095fdf970,
      prev = 0xffffffc095fdf970
    }
  }
}

// module symbol loading
crash> mod -S .

mod: cannot find or load object file for xxxx module

     MODULE       NAME              SIZE  OBJECT FILE

ffffffbffc0650f0  brcm_bt_drv      13853  ./brcm_bt_drv.ko

// workqueue 출력
crash> runq

CPU 0 RUNQUEUE: ffffffc0c58e7d80
  CURRENT: PID: 350    TASK: ffffffc0c0b20000  COMMAND: "dhd_dpc"
  RT PRIO_ARRAY: ffffffc0c58e7eb8
     [  1] PID: 350    TASK: ffffffc0c0b20000  COMMAND: "dhd_dpc"
  CFS RB_ROOT: ffffffc0c58e7e18
     [120] PID: 5437   TASK: ffffffc02cc621c0  COMMAND: "kworker/0:0"
     [100] PID: 17289  TASK: ffffffc0536a0b40  COMMAND: "kworker/0:0H"
     [120] PID: 3      TASK: ffffffc0c42b0b40  COMMAND: "ksoftirqd/0"

CPU 1 RUNQUEUE: ffffffc0c58f8d80
  CURRENT: PID: 10061  TASK: ffffffc052f18000  COMMAND: "mdss_fb0"
  RT PRIO_ARRAY: ffffffc0c58f8eb8
     [ 83] PID: 10061  TASK: ffffffc052f18000  COMMAND: "mdss_fb0"
  CFS RB_ROOT: ffffffc0c58f8e18
     [120] PID: 1238   TASK: ffffffc095c22d00  COMMAND: "kernel_logger"

CPU 2 RUNQUEUE: ffffffc0c5909d80
  CURRENT: PID: 19     TASK: ffffffc0c3e5f080  COMMAND: "ksoftirqd/2"
  RT PRIO_ARRAY: ffffffc0c5909eb8
     [no tasks queued]
  CFS RB_ROOT: ffffffc0c5909e18
     [111] PID: 459    TASK: ffffffc0b28bc380  COMMAND: "DispSync"
     [120] PID: 8      TASK: ffffffc0c42b4ec0  COMMAND: "rcu_preempt"

CPU 3 RUNQUEUE: ffffffc0c591ad80
  CURRENT: PID: 2403   TASK: ffffffc0435c0b40  COMMAND: "kworker/3:3"
  RT PRIO_ARRAY: ffffffc0c591aeb8
     [no tasks queued]
  CFS RB_ROOT: ffffffc0c591ae18
     [no tasks queued]

CPU 4 RUNQUEUE: ffffffc0c592bd80
  CURRENT: PID: 0      TASK: ffffffc0c3ca6540  COMMAND: "swapper/4"
  RT PRIO_ARRAY: ffffffc0c592beb8
     [no tasks queued]
  CFS RB_ROOT: ffffffc0c592be18
     [no tasks queued]

CPU 5 RUNQUEUE: ffffffc0c593cd80
  CURRENT: PID: 0      TASK: ffffffc0c3ca1680  COMMAND: "swapper/5"
  RT PRIO_ARRAY: ffffffc0c593ceb8
     [no tasks queued]
  CFS RB_ROOT: ffffffc0c593ce18
     [no tasks queued]

// list 출력
crash> list delayed_fput_list

ffffffc001b81888
ffffffc04b1ab600
ffffffc058036000
ffffffc04ae1ac00
ffffffc04ae1a400
ffffffc09ef22700
ffffffc09ef22200
ffffffc0b37caa00
ffffffc058036800

// open files
crash> files 55 // files "pid"

PID: 55     TASK: ffffffc0c3001680  CPU: 1   COMMAND: "mpm"
ROOT: /    CWD: /
 FD       FILE            DENTRY           INODE       TYPE PATH
  0 ffffffc017708400 ffffffc0303fb798 ffffffc0c26746c0 UNKN inotify
  1 ffffffc017694d00 ffffffc024e2abd0 ffffffc0c26746c0 UNKN inotify

crash> foreach files // all pid


// symbol to virtual address
crash> sym bt_send_data_ldisc

ffffffbffc063638 (t) bt_send_data_ldisc [brcm_bt_drv] /source/android/kernel/drivers/bluetooth/broadcom/bt_protocol_driver/brcm_bt_drv.c: 470

// tree 구조 파싱

crash> tree -t radix -r address_space.page_tree 0xFFFFFFC0F1809330
ffffffba4a6fdde0
ffffffba4a6fdd30
ffffffba4a6fdc80

...skipping...
ffffffba4dddec20
80000000000

// memory read

crash> rd -s 0xFFFFFFC002D06650 128

ffffffc002d06650print_fmt_writeback_single_inode_template+128 ffffffc007219800
ffffffc002d06660:  ffffffc002d06780 ffffffc0d9f136e0
ffffffc002d06670:  0000000000148112 0000000000000001
ffffffc002d06680:  0000000000000000 00000000578da734
ffffffc002d06690:  000000001dfb5e06 00000000578da734
ffffffc002d066a0:  000000001dfb1f06 00000000578da734
ffffffc002d066b0:  000000001dfbba06 0000000000040004
ffffffc002d066c0:  000000000000000a 0000000000000000
ffffffc002d066d0:  000000000000b700 0000000000000001
ffffffc002d066e0:  ffffffc002d066e0 ffffffc002d066e0
ffffffc002d066f0:  000000000000d100 0000000000000000
ffffffc002d06700:  0000000000000000 0000000000000000
ffffffc002d06710:  0000000000006f00 ffffffc002d06718
ffffffc002d06720:  ffffffc002d06718 ffffffc002d06728
ffffffc002d06730:  ffffffc002d04028 ffffffc002d064d8
ffffffc002d06740:  ffffffc002d06998 ffffffc0cdc678f0
ffffffc002d06750:  000000000000e600 0000000000000000
ffffffc002d06760:  0000000000000001 0000000000000000
ffffffc002d06770:  devpts_sops+16   0000000000000000
ffffffc002d06780:  ffffffc002d06640 0000002000000000
ffffffc002d06790:  000000000000e600 0000000000000000
ffffffc002d067a0:  0000000000000000 ffffffc002d067a8
ffffffc002d067b0:  ffffffc002d0d8a8 0000000000000001
ffffffc002d067c0:  ffffffc002d067c0 ffffffc002d067c0
ffffffc002d067d0:  0000000000002200 0000000000000000
ffffffc002d067e0:  0000000000000000 0000000000000000
ffffffc002d067f0print_fmt_hrtimer_expire_entry+48 00000000000200da
ffffffc002d06800:  default_backing_dev_info 0000000000000000
ffffffc002d06810:  ffffffc002d06810 ffffffc002d06810
ffffffc002d06820:  0000000000000000 ffffffc002d06828
ffffffc002d06830:  ffffffc002d06828 0000000000000000
ffffffc002d06840:  0000000000000000 0000000000000000
ffffffc002d06850:  0000000000000000 ffffffc002d06860
ffffffc002d06860:  ffffffc034f0c200 0000000000000000
ffffffc002d06870:  proc_tid_stat    0000000000000000
ffffffc002d06880:  0000000000000000 0000000000000000
ffffffc002d06890:  0000000000000000 0000000000000000
ffffffc002d068a0:  0000000000058124 0000000000000000
ffffffc002d068b0:  proc_def_inode_operations ffffffc007219800
ffffffc002d068c0:  ffffffc002d069e0 ffffffc0d9f139b0
ffffffc002d068d0:  0000000000145113 0000000000000001
ffffffc002d068e0:  0000000000000000 00000000578da734
ffffffc002d068f0:  000000001dfb1f06 00000000578da734
ffffffc002d06900:  000000001dfb1f06 00000000578da734
ffffffc002d06910:  000000001dfb1f06 0000000000040004
ffffffc002d06920:  000000000000000a 0000000000000000
ffffffc002d06930:  0000000000000000 0000000000000001
ffffffc002d06940:  ffffffc002d06940 ffffffc002d06940
ffffffc002d06950:  0000000000000000 0000000000000000



2016/06/14 09:36 2016/06/14 09:36
Posted by scott

사용자 삽입 이미지


홈페이지 코드를 정리하다가 템플릿? 매크로? 스타일의 동일 코드를 여러 페이지에 집어넣어야 하는 경우가 생겼는데, php를 활용하기로 한다.
html 문서 내에서 php 코드를 사용하려면,
단순히 html내에서 php 태그를 사용하면 된다. ( <?php ?> )

<html>
<head></head>
<body>
<?php include_once("my_macro.php") ?>
</body>
</html>

요런 스타일로 넣으면 되고, 그냥 코드를 때려 넣어도 된다.

<?php echo date("Y-m-d H:i:s") ?>
요렇게..

구글 광고 코드 같은걸 여러 페이지에 집어 넣을때 요긴하게 쓸 수 있다.
물론 요즘 블로그는 플러그인 같은 걸로 한번에 집어 넣지만,
html을 관리하는 예전 스타일의 홈페이지는 알아두면 편리할 듯하다.

단, 사용중인 웹서버에서 html 문서를 php mime으로 인식해 줘야 가능해서
아래와 같은 설정을 추가해 줘야 한다.
vi /etc/apache2/httpd.conf
=================
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .php5
AddType application/x-httpd-php .html
AddType application/x-httpd-php .htm
AddType application/x-httpd-php-source .phps
</IfModule>

=================
2015/01/15 12:13 2015/01/15 12:13
Posted by scott

http://blog.naver.com/kimscom/90079277737
2011/09/15 10:38 2011/09/15 10:38
Posted by scott
git 설치
$ sudo apt-get install git-core

1. git server 계정 생성
$ sudo adduser \
--system \
--shell /bin/bash \
--gecos 'git version control' \
--group \
--home /home/git \
git
$ sudo passwd git

2. git 정보가 저장될 repositories 디렉토리 생성
$ sudo -u git mkdir /home/git/repositories

3. 서버측에 저장할 프로젝트를 로컬에 생성
$ cd
$ mkdir Project
$ cd Project
$ touch README
$ git init
$ git add .
$ git status
$ git commit -a -m "Project First Commit"

4. public repository를 만들기 위한 설정
$ pwd
~/Project
$ cd ..
$ ls
Project
$ git clone --bare Project Project.git
$ touch Project.git/git-daemon-export-ok
bare git 참고 포스트
Git bare vs. non-bare repositories


5. Project.git을 git계정의 repositories로 이동
$ sudo -u git cp -R Project.git /home/git/repositories
$ cd /home/git/repositories/Project.git
$ sudo -u git git --bare update-server-info
$ sudo -u git mv hooks/post-update.sample hooks/post-update

6. 다른 컴퓨나 임의의 디렉토리에서 clone 명령을 수행 파일을 제대로 받아오는지 확인
Project.git을 만들때 사용한 Project 디렉토리는 백업후 clone을 통해 새로 생성을 해주도록 한다.
clone을 통해 Project.git 내용을 받아와야 따로 remote를 추가하지 않아도 orgin이라는 alias로
remote가 기본 셋팅이 되게 된다.
$ mkdir dev
$ cd dev
$ git clone git@HostName:repositories/Project

7. 기타 명령어
- 로컬 리포지토리에 서버 저장소 alias 추가
$ pwd
~/Project
$ git remote -v
$ git remote add sv git@HostName:repositories/Project
$ git remote -v
sv git@HostName:repositories/Project (fetch)
sv git@HostName:repositories/Project (push)

- 로컬 리포지토리에서 파일을 수정한뒤 서버 리포지토리에 업로드 하는 방법
$ vim README
$ git commit -a -m "README file modified"
$ git push sv

- 서버 리포지토리에 변경된 내용을 받는 방법
$ git fetch sv

2011/02/14 17:16 2011/02/14 17:16
Posted by scott